2013-01-17 55 views
13

मैं एक XML विन्यास फाइल इस के समान है:अपाचे कॉमन्स एक्सएमएल कॉन्फ़िगरेशन - किसी दिए गए नोड पर ऑब्जेक्ट्स की सूची कैसे प्राप्त करें?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<config> 
    <mainServerHostname>MainServer</mainServerHostname> 
    <failoverServers> 
     <server> 
      <ipAddress>192.168.0.5</ipAddress> 
      <priority>1</priority> 
     </server> 
     <server> 
      <ipAddress>192.168.0.6</ipAddress> 
      <priority>2</priority> 
     </server> 
    </failoverServers> 
</config> 

अब, मुझे पता है कि निम्नलिखित कोड का उपयोग करके (मेरी XMLConfiguration वस्तु की स्थापना और यह config बुला के बाद):

config.getList("failoverServers.server.ipAddress"); 

मैं सभी आईपी पते की एक सूची प्राप्त कर सकते हैं। यह आसान है, लेकिन अगर मैं कुछ इस तरह क्या कर सकते हैं और भी आसान हो जाएगा होगा:

config.getList("failoverServers.server"); 

और मिलता है, जिनमें से प्रत्येक एक IPADDRESS और एक प्राथमिकता है वस्तुओं की एक सूची। जहां तक ​​मैं कह सकता हूं, ऐसा करने का कोई तरीका नहीं है। क्या किसी के पास इस तरह की कार्यक्षमता को पूरा करने के बारे में कोई विचार है? मैं एक्सएमएल की संरचना से संबंधित डेटा संरचनाओं को परिभाषित करने के लिए भी पूरी तरह से तैयार हूं कि जावा डेटा को मैप कर सकता है अगर इससे चीज़ें आसान हो जाएंगी (वास्तव में यह शायद बेहतर भी होगी)। सभी को मदद के लिए धन्यवाद!

उत्तर

15

आप XML कॉन्फ़िगरेशन के बजाय श्रेणीबद्ध कॉन्फ़िगरेशन का उपयोग कर सकते हैं। इस तरह काम करता है:

List<HierarchicalConfiguration> servers = config.configurationsAt("failoverServers.server"); 
for(HierarchicalConfiguration server : servers) { 
    System.out.println(server.getString("ipAddress")); 
} 

देखें: http://commons.apache.org/configuration/userguide/howto_xml.html