当元素不区分大小写时,是否可以使用单个Xpath表达式扫描xml元素

时间:2017-04-07 21:25:10

标签: java xml xpath

我需要解析XML以下。我需要获取名称值。但是name元素可能不区分大小写。如何使用{{写一个通用的Xpath epression来读取元素1}}或name

Name

当我们将<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> 作为动态值时,下面的表达式适用于name元素。

XPathExpression:

id

2 个答案:

答案 0 :(得分:1)

请尝试以下XPath以匹配nameName元素

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

/*[matches(name(), "name", "i")]应匹配任何名称(*)等于name()忽略("name")案例

的元素("i"

答案 1 :(得分:1)

您可以尝试使用XPath translate()函数:

<强>翻译(字符串1,字符串,STRING3)

string2 中的字符替换为 string3

中的字符,以转换 string1

在您的情况下,以下内容:

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

意愿:

  1. 每个Employee
  2. 检查每个孩子
  3. 将大写字母的小孩(local-name())名称中的所有字母转换为小写
  4. 将其与&#34; name&#34;
  5. 进行比较

    有了这个,您不必手动检查每种可能性,也可以重复使用其他任何可能性;你只需要替换&#34; name&#34;通过你要检查的词。

    进一步阅读:

    translate() - &gt; https://developer.mozilla.org/fr/docs/XPath/Fonctions/translate

    local-name() - &gt; https://developer.mozilla.org/fr/docs/XPath/Fonctions/local-name