在Python中解析xsd文件时出现奇怪的现象(特别是行号/引用)

问题描述 投票:0回答:1


我正在解析 XSD 文件,解析时发生了一个奇怪的现象。例如,我有这个元素:

<xsd:element name="Example" type="ExampleType" minOccurs="0">
    <xsd:annotation>
        <xsd:documentation>
            <Description>This is the description</Description>
            <LineNumber>4</LineNumber>
        </xsd:documentation>
    </xsd:annotation>
</xsd:element>

我正在使用此代码:

#xml.etree.ElementTree
annotation = element.find(".//xsd:annotation", namespace)
if annotation is not None:
   documentation = annotation.find(".//xsd:documentation", namespace)
   if documentation is not None:
       for doc_child in documentation:
           tag = doc_child.tag.split('}')[-1] 
           element_dict[element_name][tag] = doc_child.text.strip() 

现在这是奇怪的部分。一旦我将 element_dict 转换为数据框并将数据框转换为 Excel,行号就会发生变化。我正在获取描述和行号,如果我在示例中打印出来,那就是:

Description: This is the description
LineNumber: 4

但是在excel文件中却是这样的

Description: This is the description
LineNumber: Part A Line 12

我已经确认该元素是从 A 部分第 12 行(xsd 中的后续元素)中提取的,但我很困惑代码中的原因是什么?另外,我将如何解析它,以便我可以获得 和此参考行号?

python parsing xsd
1个回答
0
投票

好吧,我明白了。事实证明,当我提取数据时,有两个元素具有完全相同的名称(ExampleName)。

由于我将此数据添加到字典中,其中元素名称是键,所以我有两个元素更新同一记录。

{
   "Name" : "ExampleName",
   "LineNumber" : "4"
}
{
   "Name" : "ExampleName",
   "LineNumber" : "Part A Line 12"
}

首先将行号“4”设置为“Part A Line 12”

© www.soinside.com 2019 - 2024. All rights reserved.