2016-10-20 70 views
1

我有一個XML文檔和一些可用於從中提取數據的路徑。使用XPath從文檔中的特定位置提取元素

實施例的路徑:

Bill/Id 
Bill/Line/AccountBasedExpenseLineDetail 

棘手的部分是,我需要從文檔的相同的「區」中提取的每個數據點。例如,如果我得到了一個文件是這樣的:

 <Bill domain="QBO" sparse="false"> 
      <Line> 
       <AccountBasedExpenseLineDetail> 
        1 
       </AccountBasedExpenseLineDetail> 
      </Line> 
     </Bill> 
     <Bill domain="QBO" sparse="false"> 
      <Id>148</Id> 
     </Bill> 

我真的需要返回上面給出的路徑沒有什麼,因爲<AccountBasedExpenseLineDetail><Id>標籤不同<Bill>標籤中找到。

但是,如果該文件是這樣的:

  <Bill domain="QBO" sparse="false"> 
       <Id>148</Id> 
       <Line> 
        <AccountBasedExpenseLineDetail> 
         1 
        </AccountBasedExpenseLineDetail> 
       </Line> 
      </Bill> 

我將返回148的Bill\Id路徑,1個用於Bill/Line/AccountBasedExpenseLineDetail路徑,因爲他們都包含在同一Bill對象。

這是非常棘手的,因爲對於更復雜的表格以及深度嵌套對象的要求也適用。有沒有一些XPath功能可能會讓這個問題變得更簡單?就目前而言,我可以考慮一個相當複雜的遞歸解決方案,但如果我錯過了一些明顯的東西,我不想開始研究它。

回答

1

此XPath,

/Bill[Line/AccountBasedExpenseLineDetail]/Id 

將返回Id元素只有Bill有其本身所具有的AccountBasedExpenseLineDetail子元素的Line子元素。

和這個XPath,

/Bill[Id]/Line/AccountBasedExpenseLineDetail 

將返回AccountBasedExpenseLineDetail元素只有BillId子元素。