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

如何从XML中获取指定kod_parametru对应的hodnota属性值?

获取指定Parametr节点的hodnota属性值

针对你提供的XML数据,要获取所有kod_parametru="PC0.1"的Parametr节点的hodnota属性值,以下是几种常用实现方式:

你的XML结构(格式化后)

<items>
  <item kod_zbozi="1010113414">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont Allegro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <item kod_zbozi="1011124131">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont OfficePro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <item kod_zbozi="1011124135">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont OfficePro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <item kod_zbozi="1011124139">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont OfficePro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 11 Pro" />
  </item>
  <item kod_zbozi="1011124145">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont OfficePro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <item kod_zbozi="1011340128">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont OfficePro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
</items>

通用XPath表达式

所有支持XPath的工具/语言都可以用这个表达式直接定位目标属性:

//Parametr[@kod_parametru='PC0.1']/@hodnota
  • //Parametr:匹配XML中所有层级的Parametr节点
  • [@kod_parametru='PC0.1']:筛选出kod_parametru属性值为PC0.1的节点
  • /hodnota:提取该节点的hodnota属性值

Python 实现(内置xml.etree.ElementTree)

无需额外安装依赖,用标准库即可完成:

import xml.etree.ElementTree as ET

# 解析XML字符串(如果是文件,替换为ET.parse("your_file.xml"))
xml_content = """
<items>
  <item kod_zbozi="1010113414">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont Allegro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <!-- 其他item节点省略 -->
</items>
"""
root = ET.fromstring(xml_content)

# 筛选目标节点并提取属性值
results = [param.get("hodnota") for param in root.findall(".//Parametr[@kod_parametru='PC0.1']")]

print(results)
# 输出: ['AutoCont Allegro', 'AutoCont OfficePro', 'AutoCont OfficePro', 'AutoCont OfficePro', 'AutoCont OfficePro', 'AutoCont OfficePro']

Python 实现(lxml库,更灵活的XPath支持)

先安装依赖:pip install lxml,然后用XPath直接提取:

from lxml import etree

xml_content = """你的XML内容"""
root = etree.fromstring(xml_content)

# 直接通过XPath获取所有目标属性值
results = root.xpath("//Parametr[@kod_parametru='PC0.1']/@hodnota")

print(results)
# 输出同上

C# 实现(LINQ to XML)

using System;
using System.Linq;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        string xmlContent = @"<items>
  <item kod_zbozi=""1010113414"">
    <Parametr kod_parametru=""PC0.1"" hodnota=""AutoCont Allegro"" />
    <Parametr kod_parametru=""PC4.2"" hodnota=""Windows 10 Pro"" />
  </item>
  <!-- 其他item节点省略 -->
</items>";

        XDocument doc = XDocument.Parse(xmlContent);
        var results = doc.Descendants("Parametr")
                         .Where(p => p.Attribute("kod_parametru")?.Value == "PC0.1")
                         .Select(p => p.Attribute("hodnota")?.Value)
                         .ToList();

        foreach (var value in results)
        {
            Console.WriteLine(value);
        }
    }
}

JavaScript 实现(浏览器环境)

const xmlContent = `
<items>
  <item kod_zbozi="1010113414">
    <Parametr kod_parametru="PC0.1" hodnota="AutoCont Allegro" />
    <Parametr kod_parametru="PC4.2" hodnota="Windows 10 Pro" />
  </item>
  <!-- 其他item节点省略 -->
</items>
`;

const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlContent, "text/xml");

// 用XPath查询目标属性
const xpathResult = xmlDoc.evaluate("//Parametr[@kod_parametru='PC0.1']/@hodnota", xmlDoc, null, XPathResult.ANY_TYPE, null);

let results = [];
let node = xpathResult.iterateNext();
while (node) {
    results.push(node.value);
    node = xpathResult.iterateNext();
}

console.log(results);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:20:33