Java Xpath添加一个';自定义字符串';关于转移到其他元素

Java Xpath添加一个';自定义字符串';关于转移到其他元素,java,xml,xpath,Java,Xml,Xpath,在使用XPATH和JAVA查找XML元素时,我有一个问题,其中包含一些约束。 让我知道如果需要更多的信息,或者如果有人问这个问题,请提供链接,这将有助于阅读更多 任何关于需要更改的内容的指针都会有所帮助 下面是我目前拥有的XML 从下面的XML中,我只想获取的文本、和的,然后创建一个HashMap,其中是键,值是 到目前为止,我能够获得所有的Name、LocalAddress和zipcode列表,但无法获得特定元素的列表 <SchoolRoot> <School>

在使用XPATH和JAVA查找XML元素时,我有一个问题,其中包含一些约束。 让我知道如果需要更多的信息,或者如果有人问这个问题,请提供链接,这将有助于阅读更多

任何关于需要更改的内容的指针都会有所帮助

下面是我目前拥有的XML

从下面的XML中,我只想获取
的文本、
,然后创建一个HashMap,其中
是键,值是

到目前为止,我能够获得所有的Name、LocalAddress和zipcode列表,但无法获得特定
元素的列表

<SchoolRoot>
<School>
    <Name>123 School</Name>
    <Address>
        <LocalAddress>
            <Street>This a fixed value ( In this example, lets say ) 123 St </Street>
            <AptNo>This is user input Value ( Can be anything )</AptNo>
        </LocalAddress>
        <LocalAddress>
            <Street>This a fixed value ( In this example, lets say ) 345 St </Street>
            <AptNo>This is user input Value ( Can be anything )</AptNo>
        </LocalAddress>
        <ZipCode>123</ZipCode>
    </Address>
</School>
<School>
    <Name>34564 School</Name>
    <Address>
        <LocalAddress>
            <Street>This a fixed value ( In this example, lets say ) 678 St </Street>
            <AptNo>This is user input Value ( Can be anything )</AptNo>
        </LocalAddress>
        <LocalAddress>
            <Street>This a fixed value ( In this example, lets say ) 91011 St </Street>
            <AptNo>This is user input Value ( Can be anything )</AptNo>
        </LocalAddress>
        <ZipCode>121314</ZipCode>
    </Address>
</School>
</SchoolRoot>
但预期输出将一次包含一个学校的详细信息,包括zipcode。 像这样的

123 School
This a fixed value ( In this example, lets say ) 123 St 
This is user input Value ( Can be anything )
This a fixed value ( In this example, lets say ) 345 St 
This is user input Value ( Can be anything ) and 'Zipcode' : <ZipCode>
123学校
这是一个固定值(在本例中,假设为)123 St
这是用户输入值(可以是任何值)
这是一个固定值(在本例中,假设为)345 St
这是用户输入值(可以是任何值)和“Zipcode”:

您可以通过指定相等条件来限制结果节点,如下所示:

XPathExpression expr=xpath.compile(“//School[Name='123 School']]/Name |///School[Name='123 School']]/Address/LocalAddress/*”

这将产生您的预期结果(使用以下方法进行测试):

123学校
这是一个固定值(在本例中,假设为)123 St
这是用户输入值(可以是任何值)
这是一个固定值(在本例中,假设为)345 St
这是用户输入值(可以是任何值)

回复评论:未找到将自定义节点添加到返回节点列表的
xpath
方法。但是,由于您知道节点列表输出的结构,因此可以在输出循环中使用以下内容:

for (int i = 0; i < nodes.getLength(); i++) {
   if(i%5==0)
      System.out.println("Custom Message - your text");
   System.out.println(nodes.item(i).getFirstChild().getNodeValue());
   }
}
for(int i=0;i
参考资料:


你好,Rann,谢谢你的回答。它起作用了。。。需要更多的帮助!对于我得到的上述结果,是否可以添加行或字符串来区分?因为这样可以避免有多个表达式列表。请看下面的帖子了解更多细节。你好,Rann,可以这样做吗?你好,@Rann,不,这些都是动态元素。。。这完全取决于用户输入,所以我认为%5逻辑不会work@HardikGami:您能提供一个动态示例吗?我也许能为你找到解决办法。
123 School
This a fixed value ( In this example, lets say ) 123 St 
This is user input Value ( Can be anything )
This a fixed value ( In this example, lets say ) 345 St 
This is user input Value ( Can be anything ) and 'Zipcode' : <ZipCode>
for (int i = 0; i < nodes.getLength(); i++) {
   if(i%5==0)
      System.out.println("Custom Message - your text");
   System.out.println(nodes.item(i).getFirstChild().getNodeValue());
   }
}