Java 如何使用JDOM通过元素的属性值获取元素?
我有一个xml文件,如下所示:Java 如何使用JDOM通过元素的属性值获取元素?,java,xml,dom,jdom,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
<?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>
http://www.mywebsite.com/admins?cat=writer
http://www.mywebsite.com/admins?cat=editor
http://www.mywebsite.com/users?cat=critic
http://www.mywebsite.com/users?cat=reviewer
http://www.mywebsite.com/users?cat=reader
如何使用java中的JDOM库通过“name”属性的值选择“url”元素?有没有简单的方法,或者我必须选择所有的子元素,并使用“for”循环检查所需的元素?有没有像.Net中的Linq这样的方法?XPath是您的朋友。。。如果您使用的是JDOM 2.x,那么它比JDOM 1.x更简单,因此,int 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());
}
String query=“//*[@name='Critic User']”;
XPathExpression xpe=XPathFactory.instance().compile(查询,Filters.element());
for(元素urle:xpe.evaluate(mydoc))
{
System.out.printf(“此元素的名称为“%s”,文本为“%s”\n”,
urle.getName(),urle.getValue());
}
XPath是一种“不同的野兽”,但它使一些东西(比如这样)更容易编写
上面的“查询”基本上表示:查找文档中具有名为“name”属性的所有元素,name属性的值为“Critic User”
根据口味进行调整,并阅读XPath教程:
编辑:当然,更好的查询应该是://url[@name='Critic User']非常感谢。
我刚刚注意到rolfl在compile方法中颠倒了参数顺序<代码>XPathFactory.instance().compile(查询,过滤器.element())代码>
而不是XPathFactory.instance().compile(Filters.element(),query)代码>
但是,做得很好…如果性能不是问题,那么XPath可能是一个不错的选择。您可以非常有选择性地获取特定元素。但是,即使在所有元素上循环似乎过多,它通常执行得更快。最重要的是,在现实世界的应用程序中,您最终将使用原始XML文件的更多信息。