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

时间:2015-01-21 13:54:05

标签: xml xml-parsing antlr antlr4

我搜索了一个转换xml文件的选项。现在我找到了antlr4,我问我有可能为xml文件编写一个Parser吗?我想要的是在我的程序中读取一个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>

1 个答案:

答案 0 :(得分:2)

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

,除非您愿意花费数百甚至数千小时来设计,开发和测试,无数的案例,你几乎肯定没有预料到。