【问题标题】:Parsing XML processing instructions解析 XML 处理指令
【发布时间】:2022-11-29 20:51:55
【问题描述】:

我的 XML 文件顶部有一些处理指令,如下所示:

<?ID Object="AUTO_REPORT_OBJECT" Version="1.0"?>

我想使用 Go 库读取对象和版本属性值。我正在使用 Go 1.19。

我的 XML 文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<?ID Object="AUTO_REPORT_OBJECT" Version="1.0"?>
<?xml-stylesheet type="text/xsl" href="../XML/ProdRep.xsl"?>
<!DOCTYPE Auto_Report SYSTEM "../XML/ProdRep.dtd" [
        <!ELEMENT Auto_Report (Production_Report+)>
        ]>
<Auto_Report>
    <Production_Report Type="AUTO">
        ... more tags
    </Production_Report>
</Auto_Report>
<?End?>

【问题讨论】:

  • 为了使问题更清楚,请发布一个实际的 XML 示例(带有根元素)。 &lt;?ID Object="AUTO_REPORT_OBJECT" Version="1.0"?&gt; 本身不是格式正确的 XML。
  • 使用xml.Decoder 并按token 处理即可获取处理说明。显示您要处理的实际 XML 文档,以及您希望从中得到什么。
  • 完成了,抱歉。我编辑了添加整个 XML 文件的问题。

标签: xml go processing-instruction


【解决方案1】:

就 XML 而言,您可以在 PI 的内容中包含任何您喜欢的内容,因此 XML 解析器对此无济于事——您必须手动解析内容。

一种选择是采用 PI 的数据部分,将“<e”放在开头,将“/>”放在结尾,然后将其放入 XML 解析器。

【讨论】:

    【解决方案2】:

    我不知道Go,但你可以用 python 3.11 解析它。

    import xml.etree.ElementTree as ET
    
    for event, elem in ET.iterparse('your.xml', events=("pi")):
        if event == "pi":
            print(ET.tostring(elem))
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多