忽略XML标签之间的文本

-1 投票
3 回答
1950 浏览
提问于 2025-04-16 16:05
""" 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解析器来处理了。

撰写回答