我正在解析 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 中的后续元素)中提取的,但我很困惑代码中的原因是什么?另外,我将如何解析它,以便我可以获得 和此参考行号?
好吧,我明白了。事实证明,当我提取数据时,有两个元素具有完全相同的名称(ExampleName)。
由于我将此数据添加到字典中,其中元素名称是键,所以我有两个元素更新同一记录。
{
"Name" : "ExampleName",
"LineNumber" : "4"
}
{
"Name" : "ExampleName",
"LineNumber" : "Part A Line 12"
}
首先将行号“4”设置为“Part A Line 12”