如何在 Python 中读取 ARXML 中的结束标记?

How to read closing tags in ARXML in Python?

我正在使用 Python 和库 xml.etree.ElementTree 解析 ARXML 文件。它读取除独立结束标签以外的所有内容。我需要能够阅读结束标记,因为整个文件中可能散布着注释。我的目标是准确找到这些注释在 ARXML 文件中的位置,因为它们需要复制到另一个转换后的文件中。所以,重要的是我可以确定何时遇到结束标记(以及它后面可能出现的注释),这样我就知道 where 这个注释到底是什么(它是哪个节点里面)。

这是我正在解析的一个很好的例子:

<item>
    <name>
    </name> <-- Name module ends here -->
</item> <-- Item1 ends here -->

我读到可以通过查看 node.text 是否为 None 来检查某些内容是否为结束标记。如果是,则它是结束标记。但是,此 适用于这种格式的结束标签:<item name="Pizza" />。自闭标签。

这不适用于仅关闭标签,例如 </item></a>

是否也有读取这些结束标记的解决方法或方法?到目前为止,我正在使用 ElementTree 并使用 for child in root.iter().

遍历文档的根目录

在构建 DOM 时,结束标记不存在。它们只是序列化工件,而不是 DOM.

的一部分

粗略阅读当前文档,ElementTree 似乎没有在解析时保留注释节点的选项。奇怪的是,您可以通过 API 创建 评论节点,它们将被序列化。但是在解析 XML 时它会丢弃注释。

所以看起来最好的选择可能是 SAX (event-based) 解析,您可以在其中获得每个事件的回调,包括开始和结束标记。这有点复杂,因为构成“事件”的内容并不总是直观的。例如,文本节点可能会呈现为多个单独的事件,您必须自己积累这些事件。 Python 有 xml.sax 模块。