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

Java 当xml元素不区分大小写时,是否可以使用单个Xpath表达式扫描该元素,java,xml,xpath,Java,Xml,Xpath,我需要解析下面的XML。我需要获取name-value。但是name元素可能不区分大小写。如何编写一个泛型Xpathepression来读取带有name或name的元素 <Employees> <Employee id="1"> <age>29</age> <name>Pankaj</name> <gender>Male</gender>

我需要解析下面的
XML
。我需要获取name-value。但是name元素可能不区分大小写。如何编写一个泛型
Xpath
epression来读取带有
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>

尝试在下面的
XPath
中匹配
name
name
元素

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

/*[匹配(name(),“name”,“i”)]
应匹配名称(
name()
)等于
“name”
忽略(
“i”
)大小写的任何元素(

请尝试下面的
XPath
匹配
名称
名称
元素

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

/*[匹配(name(),“name”,“i”)]
应匹配名称(
name()
)等于
“name”
忽略(
“i”
)大小写的任何元素(
*
),您可以尝试XPath translate()函数:

翻译(字符串1、字符串2、字符串3)

通过将string2中的字符替换为string3中的字符来转换string1

在您的情况下,请执行以下操作:

//Employee/*[翻译(local-name(),'abcdefghijklmnopqrstuvxyz','abcdefghijklmnopqrstuvxyz')='name'];

将:

  • 对于每个
    员工
  • 检查每个孩子
  • 将子项名称(
    local-name()
    )中的所有大写字母转换为小写字母
  • 将其与“名称”进行比较
  • 这样,您就不必手动检查每种可能性,也可以重复使用其他任何可能性;您只需将“name”替换为要检查的单词即可

    进一步阅读:

    翻译()-->


    local-name()-->

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

    翻译(字符串1、字符串2、字符串3)

    通过将string2中的字符替换为string3中的字符来转换string1

    在您的情况下,请执行以下操作:

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

    将:

  • 对于每个
    员工
  • 检查每个孩子
  • 将子项名称(
    local-name()
    )中的所有大写字母转换为小写字母
  • 将其与“名称”进行比较
  • 这样,您就不必手动检查每个可能性,也可以重复使用任何其他可能性;你只需要用你想检查的单词替换“name”

    进一步阅读:

    翻译()-->

    本地名称()-->