忽略XML标签之间的文本
""" test.xml
<xyz>
<pqr>
<abc><a href="data:text/html;charset=utf-8,base64,JTNjc2NyaXB0JTNlYWxlcnQoIlhTUyIpO2hpc3RvcnkuYmFjaygpOyUzYy9zY3JpcHQlM2UiPjwvYT4=</abc>
</pqr>
<pqr>
<abc><iframe src="data:text/html;charset=utf-8,base64,JTNjc2NyaXB0JTNlYWxlcnQoIlhTUyIpO2hpc3RvcnkuYmFjaygpOyUzYy9zY3JpcHQlM2UiPjwv</abc>
</pqr>
<xyz>
""""
我在使用这个XML文件并在Python中解析时,出现了错误(格式不正确)。我该如何解析这个XML文件,或者有没有其他方法可以从这个文件中获取数据呢?
3 个回答
0
我简单看了一下你的XML片段,发现了两个问题,导致你的XML格式不正确:
- 你的结束标签
<xyz>
少了一个斜杠:应该是</xyz>
- 你的
<a>
和<iframe>
标签也没有关闭。
1
你的 <xyz>
标签不平衡(有两个开始标签),而且 test.xml
这一行是多余的。你的 <a>
标签没有关闭,而且它的 href
属性没有用引号括起来。你的 iframe 标签也是这样。你使用的解析器应该会告诉你在哪里遇到了错误。修复这些问题后,你就可以正常使用了。
如果你想解析 xml,首先要确保它是 格式正确的 XML。通常,你可以稍微调整一下,让原本无法解析的代码片段变成格式正确的,这样就可以使用标准的解析器了。
2
你可以先修改一下xml文件,然后用cdata把格式不太好的xml包起来。
举个例子:
<xyz>
<pqr>
<abc><![CDATA[<a href="data:text/html;charset=utf-8,base64,JTNjc2NyaXB0JTNlYWxlcnQoIlhTUyIpO2hpc3RvcnkuYmFjaygpOyUzYy9zY3JpcHQlM2UiPjwvYT4=]]></abc>
</pqr>
<pqr>
<abc><![CDATA[<iframe src="data:text/html;charset=utf-8,base64,JTNjc2NyaXB0JTNlYWxlcnQoIlhTUyIpO2hpc3RvcnkuYmFjaygpOyUzYy9zY3JpcHQlM2UiPjwv]]></abc>
</pqr>
<xyz>
可以参考这个链接:http://www.w3schools.com/xml/xml_cdata.asp
之后你就可以直接用Python的xml解析器来处理了。