2017-04-07 53 views
0

我需要解析下面的XML。我需要取名稱值。但名稱元素可能不區分大小寫。如何寫通用Xpath epression讀取元素nameName當元素不區分大小寫時,是否可以使用單個Xpath表達式掃描xml元素

<Employees> 
    <Employee id="1"> 
     <age>29</age> 
     <name>Pankaj</name> 
     <gender>Male</gender> 
     <role>Java Developer</role> 
    </Employee> 
    <Employee id="2"> 
     <age>35</age> 
     <Name>Lisa</Name> 
     <gender>Female</gender> 
     <role>CEO</role> 
    </Employee> 
</Employees> 

下面的表達式將好名字元素,當我們給id動態值。

XPathExpression:

exprs = xpath.compile("/Employees/Employee/@id" + id+ "']/name/text()"); 

回答

1

下面XPath嘗試匹配兩者nameName元件

/Employees/Employee/*[matches(name(), "name", "i")]/text() 

/*[matches(name(), "name", "i")]應匹配任何元素(*),其名稱(name())等於"name"忽略("i" )案例

1

您可以嘗試的XPath translate()函數:

翻譯(字符串1,字符串,STRING3)

STRING3

字符串2與字符替換的字符轉換 STRING1

在你的情況,如下:

//Employee/*[translate(local-name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='name']";

會:

  1. 對於每個Employee
  2. 檢查每個孩子
  3. 轉換在那些孩子(local-name())的名稱的所有字母大寫改爲小寫
  4. 把它比作「名」

有了這個,你不必手動檢查每個可能性,並可以重新使用別的東西;你只需要用你想檢查的詞來代替「名字」。

獲得進一步的閱讀:

翻譯() - >https://developer.mozilla.org/fr/docs/XPath/Fonctions/translate

本地名稱() - >https://developer.mozilla.org/fr/docs/XPath/Fonctions/local-name

相關問題