Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jdom/XPath和&;引用;_Java_Xpath_Jdom - Fatal编程技术网

Java 使用Jdom/XPath和&;引用;

Java 使用Jdom/XPath和&;引用;,java,xpath,jdom,Java,Xpath,Jdom,我正在开发一个具有以下类型xml文件的应用程序(document.xml): 应用程序正在使用Jdom 1.1.3 <dependency> <groupId>org.jdom</groupId> <artifactId>jdom</artifactId> <version>1.1.3</version> </dependency> org.jdom Java文档对象模型 1.1

我正在开发一个具有以下类型xml文件的应用程序(
document.xml
):

应用程序正在使用Jdom 1.1.3

<dependency>
   <groupId>org.jdom</groupId>
   <artifactId>jdom</artifactId>
   <version>1.1.3</version>
</dependency>

org.jdom
Java文档对象模型
1.1.3
如何更改xpath表达式以返回第二个元素?这个版本的Jdom是否可以实现这一点

谢谢你的帮助

试试这个表达式:

    String problemXPath = "/root/subRoot[@myAttribute='CN=\"Problem\"']";
首先,解析文档时,实体
被替换为
字符,因此应该直接在XPath表达式中使用该字符


其次,在XPath中,可以对字符串常量使用单引号或双引号,如果字符串中包含引号,这将非常方便。

尝试解决方法
/root/subRoot[以(@myAttribute,\“CN=\”)开头,并包含(@myAttribute,\“Problem\”)
谢谢@anderson。我喜欢这个想法,它可能会与我的例子一起工作。但我觉得我把它简化得太多了。最后,我可能会选择另一个所需的元素。我真的需要选择像“CN=Problem”这样的东西,而不是“CN=something,…Problem”。好的。另一种解决方法是
/root/subRoot[包含(@myAttribute,\“CN=\”,\“Problem\”)后面的子字符串)和字符串长度(@myAttribute)=12]
。这应该与所需的节点匹配。例外情况是
CN=Problem“
CN=&Problem&“
CN=Problems”
,等等……所以只有两个字符不同,因为在现实生活中属性值更复杂,我认为@四十二的答案更简单。谢谢你的帮助。
<dependency>
   <groupId>org.jdom</groupId>
   <artifactId>jdom</artifactId>
   <version>1.1.3</version>
</dependency>
    String problemXPath = "/root/subRoot[@myAttribute='CN=\"Problem\"']";