You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何忽略大小写遍历Name为myvalue的Parameter标签?

不区分大小写查找XML中指定属性的Parameter标签实现方案

1. 通用XPath表达式方案

直接用XPath的translate()函数统一大小写后匹配,能快速定位所有符合条件的标签:

//Parameter[translate(@Name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='myvalue']

原理:把Name属性的所有大写字母转为小写,再与小写的myvalue做等值匹配,自动忽略大小写差异。

2. Python 具体实现

2.1 用标准库 xml.etree.ElementTree

无需额外依赖,手动遍历判断大小写:

import xml.etree.ElementTree as ET

# 替换为你的XML内容或文件路径
xml_content = """
<Interface>
      <Header>...</Header>
      <Body>...</Body>
      <Footer>...</Footer>
      <Parameters>
          <Parameter Name="myvalue">
              <Type>string</Type>
          </Parameter>
          <Parameter Name="p1">
              <Type>string</Type>
          </Parameter>
          <Parameter Name="MYVALUE">
              <Type>int</Type>
          </Parameter>
      </Parameters>
</Interface>
"""

# 解析XML
tree = ET.fromstring(xml_content)
# 筛选目标标签
target_parameters = []
for param in tree.findall(".//Parameter"):
    name_attr = param.get("Name")
    if name_attr and name_attr.lower() == "myvalue":
        target_parameters.append(param)

# 遍历处理结果
for idx, param in enumerate(target_parameters, 1):
    type_text = param.find("Type").text
    print(f"第{idx}个匹配标签:Type = {type_text}")

2.2 用 lxml 库(支持XPath更高效)

如果项目已用lxml,直接用XPath表达式一次性定位:

from lxml import etree

xml_content = """
<Interface>
      <Header>...</Header>
      <Body>...</Body>
      <Footer>...</Footer>
      <Parameters>
          <Parameter Name="myvalue">
              <Type>string</Type>
          </Parameter>
          <Parameter Name="p1">
              <Type>string</Type>
          </Parameter>
          <Parameter Name="MYVALUE">
              <Type>int</Type>
          </Parameter>
      </Parameters>
</Interface>
"""

tree = etree.fromstring(xml_content)
# 用XPath筛选
target_parameters = tree.xpath("//Parameter[translate(@Name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='myvalue']")

# 遍历结果
for param in target_parameters:
    print(f"匹配标签Type:{param.find('Type').text}")

3. Java 具体实现(DOM解析)

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;

public class XmlParameterFinder {
    public static void main(String[] args) throws Exception {
        String xmlContent = """
        <Interface>
              <Header>...</Header>
              <Body>...</Body>
              <Footer>...</Footer>
              <Parameters>
                  <Parameter Name="myvalue">
                      <Type>string</Type>
                  </Parameter>
                  <Parameter Name="p1">
                      <Type>string</Type>
                  </Parameter>
                  <Parameter Name="MYVALUE">
                      <Type>int</Type>
                  </Parameter>
              </Parameters>
        </Interface>
        """;

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new ByteArrayInputStream(xmlContent.getBytes()));

        NodeList paramNodes = doc.getElementsByTagName("Parameter");
        for (int i = 0; i < paramNodes.getLength(); i++) {
            Element paramElement = (Element) paramNodes.item(i);
            String nameAttr = paramElement.getAttribute("Name");
            if (nameAttr != null && nameAttr.equalsIgnoreCase("myvalue")) {
                String typeText = paramElement.getElementsByTagName("Type").item(0).getTextContent();
                System.out.println("匹配到的标签Type:" + typeText);
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者DooDoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:52:49