使用C ++将一个XML文档转换为另一个XML文档

时间:2012-09-10 19:56:30

标签: c++ xml xslt

将源XML文档转换为目标XML文档的简单方法是什么。源和目标之间只有很小的差异:具体来说,我想删除每个UnitIDRecord - 节点中的第一个UnitIDGroup - 节点。

  • 此任务DOM或SAX的适当模型是什么?
  • 哪个XML库最适合这个问题(这可以保证源和目标只在已删除的节点中有所不同,没有丢失的命名空间,属性,编码......)?
  • 我读到了XSLT,这可能是一个选项吗?

XML文档如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ExPostInformationRealGeneration xmlns="http://schemas.seven2one.de/EEX/TransparencyPlatform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.seven2one.de/EEX/TransparencyPlatform EEXTransparencyPlatform.xsd">
    <DispatcherID>XYZ</DispatcherID>
    <CreationDateTime>2012-05-22T13:57:00Z</CreationDateTime>
    <MessageText>1 - Positiv - Meldung mit Quality-Tag - L000</MessageText>
    <UnitIDGroup>
        <UnitID>E110200-001</UnitID>
        <UnitIDRecord><Quantity>16.9</Quantity><Starttime>2008-04-30T22:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>16.6</Quantity><Starttime>2008-04-30T23:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>16.4</Quantity><Starttime>2008-05-01T00:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
    </UnitIDGroup>
    <UnitIDGroup>
        <UnitID>E110200-002</UnitID>
        <UnitIDRecord><Quantity>16.9</Quantity><Starttime>2008-04-30T22:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>16.6</Quantity><Starttime>2008-04-30T23:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>16.4</Quantity><Starttime>2008-05-01T00:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
    </UnitIDGroup>
    <UnitIDGroup>
        <UnitID>E110201-001</UnitID>
        <UnitIDRecord><Quantity>7.0</Quantity><Starttime>2008-04-30T22:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>7.1</Quantity><Starttime>2008-04-30T23:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
        <UnitIDRecord><Quantity>7.1</Quantity><Starttime>2008-05-01T00:00:00Z</Starttime><Period>PT1H</Period><MessageText></MessageText></UnitIDRecord>
    </UnitIDGroup>
    <!-- other UnitIDGroup elements -->
</ExPostInformationRealGeneration>

1 个答案:

答案 0 :(得分:0)

如果符合您的条件,我会考虑以字符串形式读取文件并将字符串写入另一个文件的可能性。这是一个5行程序,避免任何解析等。它将运行快速,简单。但是,它是特定于这个问题而不是可重用的。因此,我提供此建议不是正确的解决方案!