擅长:python、mysql、java
<p>我使用了一个简单的技巧来解析这种伪XML(<a href="https://github.com/wazuh/wazuh-ruleset/blob/master/rules/0020-syslog_rules.xml" rel="nofollow noreferrer">Wazuh rule files</a>)来说明它的重要性——只是暂时将它包装在一个伪元素<code><whatever></whatever></code>中,从而在所有这些“根”上形成一个根。在</p>
<p>在您的情况下,不要使用像这样的无效XML:</p>
<pre><code><data> ... </data>
<data> ... </data>
</code></pre>
<p>在将其传递给解析器之前,将其临时重写为:</p>
^{pr2}$
<p>然后像往常一样解析它并迭代<code><data></code>元素。在</p>
<pre><code>import xml.etree.ElementTree as etree
import pathlib
file = Path('rules/0020-syslog_rules.xml')
data = b'<rules>' + file.read_bytes() + b'</rules>'
etree.fromstring(data)
etree.findall('group')
... array of Elements ...
</code></pre>