我有一个像下面这样的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那样的方法?
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']
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |