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

我的xsdata Python代码报ParserError Unknown property错误是什么问题?

异常触发原因
  • 你配置的字段元数据不符合xsdata的绑定规则:xsdata的XML映射相关配置需要放在字段metadata的xsdata子字典中,你直接把name参数放在metadata第一层,xsdata无法识别,因此会使用默认命名转换规则,将蛇形命名的node_name转换为小驼峰的nodeName,和XML中的<NodeName>标签无法匹配,因此抛出未知属性异常。
  • 列表类型字段未配置wrapped=False参数,xsdata默认会为列表字段查找额外的父包裹标签,也可能引发匹配异常。
修复方案

你可以按照xsdata的规则调整元数据配置,修复后的完整代码如下:

from dataclasses import dataclass, field
from typing import List
from xsdata.formats.dataclass.parsers import XmlParser
from xsdata.formats.dataclass.parsers.config import ParserConfig

xml = """
    <?xml version="1.0"?>
    <LineList>
        <Line>
            <ConnectionList>
                <Connection>
                    <NodeName>ABC</NodeName>
                </Connection>
                <Connection>
                    <NodeName>DEF</NodeName>
                </Connection>
            </ConnectionList>
        </Line>
    </LineList>
  """


@dataclass
class MyConnection:
    node_name: str = field(metadata={"xsdata": {"name": "NodeName"}})


@dataclass
class MyConnectionList:
    connections: List[MyConnection] = field(
        default_factory=list,
        metadata={"xsdata": {"name": "Connection", "wrapped": False}}
    )


@dataclass
class MyLine:
    connection_list: MyConnectionList = field(metadata={"xsdata": {"name": "ConnectionList"}})


@dataclass
class MyLineList:
    class Meta:
        name = "LineList"

    lines: List[MyLine] = field(
        default_factory=list,
        metadata={"xsdata": {"name": "Line", "wrapped": False}}
    )


config = ParserConfig(fail_on_unknown_properties=True)
parser = XmlParser(config=config)
obj = parser.from_string(xml, MyLineList)
# 验证解析结果
print(obj.lines[0].connection_list.connections[0].node_name) # 输出ABC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:15:11