【问题标题】:Ignore Text between XML tag忽略 XML 标记之间的文本
【发布时间】:2011-04-20 09:35:00
【问题描述】:
""" 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 文件或任何其他方法来从这个文件中获取数据。

【问题讨论】:

  • 您应该通过在每行之前放置四个空格来格式化代码。您也可以选择它并单击{} 按钮。 Markdown Editing Help 页面上的更多有用提示。

标签: python xml xml-parsing


【解决方案1】:

可以先改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解析器了

【讨论】:

    【解决方案2】:

    &lt;xyz&gt; 标签不平衡(有两个开始标签),test.xml 行是虚假的。您的 &lt;a&gt; 标签没有关闭,它的 href 属性没有被引用。与您的 iframe 标记相同。您正在使用的解析器应该告诉您它在哪里遇到错误。修复它,然后你就可以开始了。

    如果要解析xml,首先要保证是well formed XML。通常,可以进行一些按摩以使原本无法解析的 sn-p 格式良好,以便您可以使用标准解析器。

    【讨论】:

      【解决方案3】:

      对您的 XML 片段进行快速视觉检查,我突然想到了两件事:您的 XML 格式不正确:

      • 您的结束&lt;xyz&gt; 元素缺少斜线:它应该是&lt;/xyz&gt;
      • 您的&lt;a&gt;&lt;iframe&gt; 元素也没有关闭。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-29
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-09
        相关资源
        最近更新 更多