首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dom4j迭代Xml

如何使用dom4j迭代Xml
EN

Stack Overflow用户
提问于 2011-08-26 15:05:04
回答 1查看 3.3K关注 0票数 0

我的xml文件:

代码语言:javascript
复制
<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>

客户端:

代码语言:javascript
复制
public Client
{
String login;
String password;
//getters
Client(String login,String password)
{
this.login=login;
this.password=password;
}
}

我的测试类:

代码语言:javascript
复制
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),我应该把所有的信用对都列成一列。我在迭代中感到困惑。

EN

回答 1

Stack Overflow用户

发布于 2011-08-26 16:50:03

最好的方法可能是使用XPATH,使用类似的方法。我假设您使用的是Dom4j 1.6.1。

代码语言:javascript
复制
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");
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7206738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档