我搜索一个转换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 处理器,除非您愿意花费数百甚至数千个小时来设计、开发和测试您几乎肯定没有预料到的无数情况。