Java 使用XPath解析相同的XML元素 k-p24h-n7-1 2013-10-30T08:00:00-07:00 2013-10-30T20:00:00-07:00 2013-10-31T08:00:00-07:00 2013-10-31T20:00:00-07:00 2013-11-01T08:00:00-07:00 2013-11-01T20:00:00-07:00 2013-11-02T08:00:00-07:00 2013-11-02T20:00:00-07:00 2013-11-03T07:00:00-08:00 2013-11-03T19:00:00-08:00 2013-11-04T07:00:00-08:00 2013-11-04T19:00:00-08:00 2013-11-05T07:00:00-08:00 2013-11-05T19:00:00-08:00 k-p24h-n6-2 2013-10-30T20:00:00-07:00 2013-10-31T09:00:00-07:00 2013-10-31T20:00:00-07:00 2013-11-01T09:00:00-07:00 2013-11-01T20:00:00-07:00 2013-11-02T09:00:00-07:00 2013-11-02T19:00:00-07:00 2013-11-03T08:00:00-08:00 2013-11-03T19:00:00-08:00 2013-11-04T08:00:00-08:00 2013-11-04T19:00:00-08:00 2013-11-05T08:00:00-08:00 k-p3h-n35-3 2013-10-30T11:00:00-07:00 2013-10-30T14:00:00-07:00 2013-10-30T17:00:00-07:00 2013-10-30T20:00:00-07:00 2013-10-30T23:00:00-07:00 2013-10-31T02:00:00-07:00 2013-10-31T05:00:00-07:00 2013-10-31T08:00:00-07:00 2013-10-31T11:00:00-07:00 2013-10-31T14:00:00-07:00 2013-10-31T17:00:00-07:00 2013-10-31T20:00:00-07:00 2013-10-31T23:00:00-07:00 2013-11-01T02:00:00-07:00 2013-11-01T05:00:00-07:00 2013-11-01T08:00:00-07:00 2013-11-01T11:00:00-07:00 2013-11-01T14:00:00-07:00 2013-11-01T17:00:00-07:00 2013-11-01T23:00:00-07:00 2013-11-02T05:00:00-07:00 2013-11-02T11:00:00-07:00 2013-11-02T17:00:00-07:00 2013-11-02T23:00:00-07:00 2013-11-03T04:00:00-08:00 2013-11-03T10:00:00-08:00 2013-11-03T16:00:00-08:00 2013-11-03T22:00:00-08:00 2013-11-04T04:00:00-08:00 2013-11-04T10:00:00-08:00 2013-11-04T16:00:00-08:00 2013-11-04T22:00:00-08:00 2013-11-05T04:00:00-08:00 2013-11-05T10:00:00-08:00 2013-11-05T16:00:00-08:00

Java 使用XPath解析相同的XML元素 k-p24h-n7-1 2013-10-30T08:00:00-07:00 2013-10-30T20:00:00-07:00 2013-10-31T08:00:00-07:00 2013-10-31T20:00:00-07:00 2013-11-01T08:00:00-07:00 2013-11-01T20:00:00-07:00 2013-11-02T08:00:00-07:00 2013-11-02T20:00:00-07:00 2013-11-03T07:00:00-08:00 2013-11-03T19:00:00-08:00 2013-11-04T07:00:00-08:00 2013-11-04T19:00:00-08:00 2013-11-05T07:00:00-08:00 2013-11-05T19:00:00-08:00 k-p24h-n6-2 2013-10-30T20:00:00-07:00 2013-10-31T09:00:00-07:00 2013-10-31T20:00:00-07:00 2013-11-01T09:00:00-07:00 2013-11-01T20:00:00-07:00 2013-11-02T09:00:00-07:00 2013-11-02T19:00:00-07:00 2013-11-03T08:00:00-08:00 2013-11-03T19:00:00-08:00 2013-11-04T08:00:00-08:00 2013-11-04T19:00:00-08:00 2013-11-05T08:00:00-08:00 k-p3h-n35-3 2013-10-30T11:00:00-07:00 2013-10-30T14:00:00-07:00 2013-10-30T17:00:00-07:00 2013-10-30T20:00:00-07:00 2013-10-30T23:00:00-07:00 2013-10-31T02:00:00-07:00 2013-10-31T05:00:00-07:00 2013-10-31T08:00:00-07:00 2013-10-31T11:00:00-07:00 2013-10-31T14:00:00-07:00 2013-10-31T17:00:00-07:00 2013-10-31T20:00:00-07:00 2013-10-31T23:00:00-07:00 2013-11-01T02:00:00-07:00 2013-11-01T05:00:00-07:00 2013-11-01T08:00:00-07:00 2013-11-01T11:00:00-07:00 2013-11-01T14:00:00-07:00 2013-11-01T17:00:00-07:00 2013-11-01T23:00:00-07:00 2013-11-02T05:00:00-07:00 2013-11-02T11:00:00-07:00 2013-11-02T17:00:00-07:00 2013-11-02T23:00:00-07:00 2013-11-03T04:00:00-08:00 2013-11-03T10:00:00-08:00 2013-11-03T16:00:00-08:00 2013-11-03T22:00:00-08:00 2013-11-04T04:00:00-08:00 2013-11-04T10:00:00-08:00 2013-11-04T16:00:00-08:00 2013-11-04T22:00:00-08:00 2013-11-05T04:00:00-08:00 2013-11-05T10:00:00-08:00 2013-11-05T16:00:00-08:00,java,xml,xpath,Java,Xml,Xpath,目前我正在用Java中的XPath解析XML。一切都很好,直到我看到这三个街区。让我感到困惑的是,我遇到了三个,每一个里面都有不同类型的信息。我目前对此的“破解”是将每个local重命名为local1、local2、和local3,因此我通过/dwml/data/time布局[@time-coordinate='local3']/start-valid-time/text()用XPath解析。这是一种黑客行为,但由于我将很快从提取XML的站点直接读取XML,我不想使用这种方式,或者,我不能使用这

目前我正在用Java中的XPath解析XML。一切都很好,直到我看到这三个街区。让我感到困惑的是,我遇到了三个
,每一个里面都有不同类型的信息。我目前对此的“破解”是将每个
local
重命名为
local1
local2
、和
local3
,因此我通过
/dwml/data/time布局[@time-coordinate='local3']/start-valid-time/text()用XPath解析。这是一种黑客行为,但由于我将很快从提取XML的站点直接读取XML,我不想使用这种方式,或者,我不能使用这种黑客行为。因为这里有三个命名类似的元素,如何使用XPath只解析第三个元素,而不重命名其中一个属性

谢谢


另外,
值每次都不同,因此我无法将其硬编码到解析器中。

您可以检查xpath谓词中是否存在
,如果不存在,则查看第3个元素

<time-layout time-coordinate="local" summarization="none">
      <layout-key>k-p24h-n7-1</layout-key>
      <start-valid-time>2013-10-30T08:00:00-07:00</start-valid-time>
      <end-valid-time>2013-10-30T20:00:00-07:00</end-valid-time>
      <start-valid-time>2013-10-31T08:00:00-07:00</start-valid-time>
      <end-valid-time>2013-10-31T20:00:00-07:00</end-valid-time>
      <start-valid-time>2013-11-01T08:00:00-07:00</start-valid-time>
      <end-valid-time>2013-11-01T20:00:00-07:00</end-valid-time>
      <start-valid-time>2013-11-02T08:00:00-07:00</start-valid-time>
      <end-valid-time>2013-11-02T20:00:00-07:00</end-valid-time>
      <start-valid-time>2013-11-03T07:00:00-08:00</start-valid-time>
      <end-valid-time>2013-11-03T19:00:00-08:00</end-valid-time>
      <start-valid-time>2013-11-04T07:00:00-08:00</start-valid-time>
      <end-valid-time>2013-11-04T19:00:00-08:00</end-valid-time>
      <start-valid-time>2013-11-05T07:00:00-08:00</start-valid-time>
      <end-valid-time>2013-11-05T19:00:00-08:00</end-valid-time>
    </time-layout>
    <time-layout time-coordinate="local" summarization="none">
      <layout-key>k-p24h-n6-2</layout-key>
      <start-valid-time>2013-10-30T20:00:00-07:00</start-valid-time>
      <end-valid-time>2013-10-31T09:00:00-07:00</end-valid-time>
      <start-valid-time>2013-10-31T20:00:00-07:00</start-valid-time>
      <end-valid-time>2013-11-01T09:00:00-07:00</end-valid-time>
      <start-valid-time>2013-11-01T20:00:00-07:00</start-valid-time>
      <end-valid-time>2013-11-02T09:00:00-07:00</end-valid-time>
      <start-valid-time>2013-11-02T19:00:00-07:00</start-valid-time>
      <end-valid-time>2013-11-03T08:00:00-08:00</end-valid-time>
      <start-valid-time>2013-11-03T19:00:00-08:00</start-valid-time>
      <end-valid-time>2013-11-04T08:00:00-08:00</end-valid-time>
      <start-valid-time>2013-11-04T19:00:00-08:00</start-valid-time>
      <end-valid-time>2013-11-05T08:00:00-08:00</end-valid-time>
    </time-layout>
    <time-layout time-coordinate="local" summarization="none">
      <layout-key>k-p3h-n35-3</layout-key>
      <start-valid-time>2013-10-30T11:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-30T14:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-30T17:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-30T20:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-30T23:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T02:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T05:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T08:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T11:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T14:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T17:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T20:00:00-07:00</start-valid-time>
      <start-valid-time>2013-10-31T23:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T02:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T05:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T08:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T11:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T14:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T17:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-01T23:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-02T05:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-02T11:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-02T17:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-02T23:00:00-07:00</start-valid-time>
      <start-valid-time>2013-11-03T04:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-03T10:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-03T16:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-03T22:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-04T04:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-04T10:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-04T16:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-04T22:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-05T04:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-05T10:00:00-08:00</start-valid-time>
      <start-valid-time>2013-11-05T16:00:00-08:00</start-valid-time>
    </time-layout>
这也有点麻烦,但至少都在xpath中。

使用谓词:

//time-layout[not(./end-valid-time)]

抱歉-完整的XPath字符串是什么?我尝试了
/dwml/data/time布局[not(./end valid time)]/text()
,但没有工作。
NodeList hourlyResult=(NodeList)hourly.evaluate(doc,xpathcontents.NODESET)
for(inti=0;i
是我使用的。太棒了!非常感谢你!这很有帮助。有趣的是,在XPath中,第一个元素不是从0开始的。请看w3schoolsThanks@Chris Seddon上的XPath示例!
//time-layout[3]