是否可以使用 ANTLR4 在没有 XSLT 的情况下重构 XML



我搜索一个转换xml文件的选项。现在我找到了antlr4,我问我可以为xml文件编写解析器吗?我想要的是在我的程序中读取一个 xml 文件。比我想分析文件的格式,而不是我想重组它。可能吗?这个例子演示了我的问题:

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1">
      <xmi:Documentation exporter="MalteFalk" exporterVersion="1.0"/>
    <person>
        <personelement type="aaa">
            <name value="Max" id="1"/>
            <lastname value="Hampelmann" id="2"/>
        </personelement>
        <personelement type="bbb">
            <name value="Hannes" id="3"/>
            <lastname value="Mustermann" id="4"/>
        </personelement>
    </person>
    <job>
        <jobelement type="ccc">
            <jobtitle value="barber"/>
            <salary value="50000"/>
        </jobelement>
        <jobelement type="ddd">
            <jobtitle value="doctor"/>
            <salary value="100000"/>
        </jobelement>
    </job>
    <relationship>
        <relation1>
            <source id="1"/>
            <target id="ddd"/>
        </relation1>
        <relation2>
            <source id="3"/>
            <source id="ccc"/>
        </relation2>
    </relationship>
</xmi:XMI>

现在我想在我的解析器中读取这个文件并将其重组为这个 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1">
  <xmi:Documentation exporter="XXX" exporterVersion="1.0"/>
    <taggedvalues>
      <tag type="Max">
        <firstname value="Max"/>
        <lastname value="Mustermann"/>
        <jobtitle value="baber"/>
        <salary value="50000"/>
      </tag>
      <tag type="Hannes">
        <firstname value="Hannes"/>
        <lastname value="Hampelmann"/>
        <jobtitle value="doctor"/>
        <salary value="100000"/>
      </tag>
    </taggedvalues>
</xmi:XMI>

是的,可以在ANTLR4中为XML编写解析器。

不,您不应该尝试这样做,而不是使用现有的解析器或 XSLT 处理器,除非您愿意花费数百甚至数千个小时来设计、开发和测试您几乎肯定没有预料到的无数情况。

相关内容

  • 没有找到相关文章

最新更新