如何使用JDOM通过其属性的值获取元素?

moo*_*ara 5 java xml dom jdom

我有一个像下面这样的xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
   <admins>
       <url name="Writer Admin">http://www.mywebsite.com/admins?cat=writer</url>
       <url name="Editor Admin">http://www.mywebsite.com/admins?cat=editor</url>
   </admins>
   <users>
      <url name="Critic User">http://www.mywebsite.com/users?cat=critic</url>
      <url name="Reviewer User">http://www.mywebsite.com/users?cat=reviewer</url>
      <url name="Reader User">http://www.mywebsite.com/users?cat=reader</url>
   </users>
</config>
Run Code Online (Sandbox Code Playgroud)

如何使用Java中的JDOM库通过其"name"属性的值选择"url"元素?是否有任何简单的方法或我必须选择所有子元素并使用"for"循环检查所需的元素?有没有像.Net中的Linq那样的方法?

rol*_*lfl 5

XPath是你的朋友......如果你使用JDOM 2.x它比JDOM 1.x更容易,那么,在JDOM 2.x中它将是这样的:

String query = "//*[@name= 'Critic User']";
XPathExpression<Element> xpe = XPathFactory.instance().compile(query, Filters.element());
for (Element urle : xpe.evaluate(mydoc)) 
{
    System.out.printf("This Element has name '%s' and text '%s'\n",
          urle.getName(), urle.getValue());
}
Run Code Online (Sandbox Code Playgroud)

XPath是一个"不同的野兽",但它会产生一些东西(比如这个),更容易编写.

上面的"查询"基本上说:查找文档中所有具有名称"name"的元素,name属性的值为"Critic User".

调整品味,并阅读XPath教程:http://www.w3schools.com/xpath/default.asp

编辑:当然,更好的查询将是:// url [@ name ='Critic User']