java-根据子级的同级值选择子级的XPath(SimpleXML)
作者:互联网
我正在使用SimpleXML(Java),并且试图基于列表中同级之一的值获取对象列表.
所以,这是我的XML:
<xml>
<metadata>
<resources>
<resource>
<ittype>Service_Links</ittype>
<links>
<link>
<path>http://www.stackoverflow.com</path>
<description>Stack Overflow</description>
</link>
<link>
<path>http://www.google.com</path>
<description>Google</description>
</link>
</links>
</resource>
<resource>
<ittype>Article_Links</ittype>
<links>
...
</links>
</resource>
...
</resources>
</metadata>
</xml>
我想要做的是使用XPath创建一个SimpleXML批注,以获取所有“链接”的列表,其中列表的同级“ ittype”等于“ Service_Links”.
因此,例如,这有效,但仅当我尝试静态获取第一个“资源”节点时(相对于基于同级“ ittype”的动态获取“资源”节点是:
@ElementList(name="links")
@Path("metadata/resources[1]/resource")
public List<Link> link;
我已经尝试了多种方法来格式化xpath以便动态地找到我想要的“资源”节点,以至于我无法在此处全部列出它们.但是,这是我尝试过的一个例子,对我来说似乎应该起作用.不知道我在做什么错…
@ElementList(name="links")
@Path("metadata/resources[resource/ittype='Service_Links']/resource")
public List<Link> link;
我已经在Google上搜索了很多,包括SO,但找不到非常相似的东西.而且我发现的内容翻译得不够好,不足以让我发现需要做的事情.例如,即使非常相似,this SO似乎也不起作用.
更新#1(8OCT @ 12:38 pm)
根据反馈,我已经尝试过:
@ElementList
@Path("metadata/resources/resource[ittype='Service_Links']")
public List<Link> link;
没有骰子:
org.simpleframework.xml.core.PathException:“链接”字段中路径“元数据/资源/资源[ittype =’Service_Links’]”的无效索引
解决方法:
我从来没有获得过SimpleXml来实现这种样式的XPath.从更彻底地阅读文档开始,看来他们还没有实现此XPath功能.
所以我在这里选择了另一种XML解析策略:https://stackoverflow.com/a/13236117/483257
标签:java,xml,xpath,simple-framework 来源: https://codeday.me/bug/20191011/1892116.html