簡體   English   中英

使用XPath解析相同的XML元素

[英]Parsing identical XML elements with XPath

<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>

目前我正在使用Java中的XPath解析XML。 一切都很好,直到我看到這三個街區。 讓我感到困惑的是,我遇到了三個<time-layout time-coordinate="local" summarization="none">每個都有不同類型的信息。 我目前的“黑客”是將每個local重命名為local1local2local3 ,所以我通過/dwml/data/time-layout[@time-coordinate='local3']/start-valid-time/text()解析XPath /dwml/data/time-layout[@time-coordinate='local3']/start-valid-time/text() 這是一種黑客行為,但由於我將很快直接從提取此XML的網站上讀取XML,我不想使用這種方式,或者也許,我不能使用該黑客。 由於那里有三個類似命名的元素,如何只用XPath解析第三個元素,而不重命名其中一個屬性?

謝謝!

PS <layout-key>值每次都不同,所以我無法將其硬編碼到我的解析器中。

那么你可以檢查你的xpath謂詞中是否存在<end-valid-time> ,如果它不存在,你就會看第3個元素。

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

這也是一個黑客,但至少它是在xpath。

使用謂詞:

//time-layout[3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM