2011-08-26 25 views
0

我的XML文件:如何通過XML使用dom4j的迭代

<credentials> 
<machine name="xyz"> 
    <cred-pairs> 
    <cred-pair> 
    <login>asad</login> 
    <password>12345</password> 
    </cred-pair> 
<cred-pair> 
    <login>ggss</login> 
    <password>97653</password> 
    </cred-pair> 
    <cred-pairs> 
</machine> 
<machine name="pqr"> 
    <cred-pair> 
    <cred-pair> 
    <login>ssdas</login> 
    <password>12345</password> 
    </cred-pair> 
    <cred-pairs> 
</machine> 
</credentials> 

客戶:

public Client 
{ 
String login; 
String password; 
//getters 
Client(String login,String password) 
{ 
this.login=login; 
this.password=password; 
} 
} 

我的測試類:

Class Test{ 
getMachineByName(String machineName) 
{ 
ArrayList<Client> machineClients=new ArrayList<Client>(); 
/*here i have to iterate through xml and upon machineName i have to create Client objects using cred-pair(s) in cred-pairs node and add to machineClientsList 
} 
} 

如果我叫getmachineByName(xyz),我應該在arraylist中得到所有的cred-pairs。我在迭代中感到困惑。

回答

0

最好的方法可能是XPATH,有這樣的東西。我假設你正在使用Dom4j 1.6.1。

Document document = DocumentHelper.parseText(xmlFileAsString); 

List<Element> elements = document.getRootElement() 
    .selectNodes("//machine[@name='"+machineName+"']//cred-pair"); 

for (Element element : elements) { 
    String login = element.attributeValue("login"); 
    String pwd = element.attributeValue("password"); 
    ... 
}