我在java.util.xml文件中使用javax.xml.parsers.DocumentBuilder。 给定这样的标记:
<?xml version="1.0" encoding="utf-8"?>
<calendar>
<endfiscalyear month="12" dayofmonth="28" />
<year yr="2014">
<event month="12" dayofmonth="24">
<p>Dividendenauszahlung</p>
<en>dividend payment</en>
</event>
</year>
<year yr="2015">
<event month="2" dayofmonth="1">
<p>Hauptversammlung</p>
<en>general meeting</en>
</event>
<event month="5" dayofmonth="2">
<p>Hauptversammlung</p>
<en>general meeting</en>
</event>
<event month="8" dayofmonth="21">
<p>Ergebnis 2.Quartal</p>
<en>1st quarter results</en>
</event>
</year>
</calendar>
现在我只想获取去年、月份和日期,其中最后一个是“全体 session ”,在此掩码中应该是year@yr=2015, <event month="4" dayofmonth="21">
。我可以分别获取年、月和日,但当我尝试时,它们都没有显示出来。
首先我想要任何一年:我尝试的两种方法是:
//*@yr[event/en='general meeting']
或
/calendar/year[event/en='general meeting']@yr
但是没有一个是正确的。 您想如何解决这个问题?
最佳答案
目前尚不清楚您在问什么,但有时对尝试的解决方案进行评论比尝试解释更容易。
以下 XPath 表达式有效:
/calendar/year[event/en='general meeting']/@yr
它的作用如下:
Select
year
elements, but only if they have a child elementevent
, which in turn has a child elementen
, whose textual content is "general meeting". Of thoseyear
elements select the attributeyr
.
对于您显示的输入文档,只有一个这样的属性符合条件,因此输出将为
yr="2015"
这就是你的想法吗?如果没有,请显示(而不是试图解释)您期望从表达式得到的输出 - 并解释为什么应选择此结果。
关于java - JAVA中如何获取XPath查询结果的父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076900/