如何使用dom4j迭代Xml

时间:2011-08-26 15:05:04

标签: xml loops dom4j

我的xml文件:

<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中获得所有的信用对。我在迭代中感到困惑。

1 个答案:

答案 0 :(得分: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");
    ...
}