忽略XML标记之间的文本

时间:2011-04-20 09:35:00

标签: python xml xml-parsing

""" 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 :(得分: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解析器

答案 1 :(得分:1)

<xyz>标记不平衡(有两个开始标记)且test.xml行是虚假的。您的<a>代码未关闭且未引用href属性。与您的iframe代码相同。您正在使用的解析器应该告诉您它遇到错误的位置。修复它,然后你会很高兴。

如果要解析 xml ,首先必须确保它是well formed XML。通常情况下,可以进行一些按摩来制作一个形状良好的无法解析的片段,以便您可以使用标准的解析器。

答案 2 :(得分:0)

对您的XML片段进行快速目视检查,我发现了两件事:您的XML格式不正确:

  • 您的结束<xyz>元素缺少斜线:它应该是</xyz>
  • 您的<a><iframe>元素也未关闭。