Java 使用xpath获取具有特定属性的顶级节点列表
请为我提供以下场景的X路径表达式 元素标记名不是常量,它们可能会变化,层次结构也可能会变化,因为在上述情况下,路径属性存在于级别1,可能在级别1下不存在 预期结果:NodeList NodeList={a,z};列表不应包含b或y节点Java 使用xpath获取具有特定属性的顶级节点列表,java,xml,xpath,Java,Xml,Xpath,请为我提供以下场景的X路径表达式 元素标记名不是常量,它们可能会变化,层次结构也可能会变化,因为在上述情况下,路径属性存在于级别1,可能在级别1下不存在 预期结果:NodeList NodeList={a,z};列表不应包含b或y节点 <root> <a path="a"> <b path="b"></b> </a> <z path="z"> <y path="y"&g
<root>
<a path="a">
<b path="b"></b>
</a>
<z path="z">
<y path="y"></y>
</z>
</root>
首先是一个很好的XPath教程
要搜索XML,只需遵循以下语法:
String query = "tag[@param= '" + param.getName() + "']";
log.debug("Xpath query = {}", query);
XPathExpression<Element> xpe = XPathFactory.instance().compile(query, Filters.element());
for (Element urle : xpe.evaluate(packages)) {
urle.doSmth();
}
String query=“tag[@param=”+param.getName()+””;
debug(“Xpath查询={}”,查询);
XPathExpression xpe=XPathFactory.instance().compile(查询,Filters.element());
对于(元素urle:xpe.evaluate(包)){
urle.doSmth();
}
如果要在文档中的任何位置选择内容,请使用/
。
例如,//x
选择所有名为x的标记,如下所示:
/root/*[@path]
更新
如果根名称不是常量:
/*/*[@path]
元素名可以是任何不特定于根的东西,但path属性在级别2不存在,在级别3不存在,那么它就不起作用了,如果有任何可能用于此条件的xpath,这将非常有用。非常感谢你。。。我必须先了解这些要求。必须包括第一级上的节点(
b
和y
)?你在问题中明确表示不。不清楚你想要实现什么。当标记名可能不同时,如何区分是否选择元素?正如你提到的,也不是按等级划分的。