merge xml files using tinyxml2 in C++

258 Views Asked by At

Now I'm using tinyxml2 library for merge several xml files. I want to checking xml files in same folder(I will use absolute path). And when I combine several xml files, I will remove the duplicates and merge them by comparing the values of Firstchild Element and its first attribute.

I tried many cases, but not sure about which can be merged in an accurate and fast way. Now I will show what I want to get.

  • First xml file

    <?xml version='1.0' encoding='utf-8'?> 
    <osm version="0.6" generator="    ">
      <node id="147782" visible="true" version="1" />
      <node id="147788" visible="true" version="1" />
      <node id="147794" visible="true" version="1" />
      <node id="147829" visible="true" version="1" />
      <node id="147835" visible="true" version="1" />
      <node id="147843" visible="true" version="1" />
      <node id="147850" visible="true" version="1" />
      <way id="10808" visible="true" version="1">
        <nd ref="147788" />
        <nd ref="150133" />
        <nd ref="150145" /> 
      </way>
      <way id="10824" visible="true" version="1">
        <nd ref="156232" />
        <nd ref="156240" />
        <nd ref="156251" />
      </way>
    
  • Second xml file

    <?xml version='1.0' encoding='utf-8'?>
    <osm version="0.6" generator="    ">
      <node id="147843" visible="true" version="1" />
      <node id="147850" visible="true" version="1" />
      <node id="438198" visible="true" version="1" />
      <node id="438199" visible="true" version="1" />
      <way id="10808" visible="true" version="1">
        <nd ref="147788" />
        <nd ref="150133" />
        <nd ref="150145" />
      </way>
      <way id="10821" visible="true" version="1">
        <nd ref="153211" />
        <nd ref="153230" />
        <nd ref="153243" />
      </way>
    
  • Merged xml file

     <?xml version='1.0' encoding='utf-8'?>
     <osm version="0.6" generator="    "> 
      <node id="147782" visible="true" version="1" />
      <node id="147788" visible="true" version="1" />
      <node id="147794" visible="true" version="1" />
      <node id="147829" visible="true" version="1" />
      <node id="147835" visible="true" version="1" />
      <node id="147843" visible="true" version="1" />
      <node id="147850" visible="true" version="1" />
      <node id="438198" visible="true" version="1" />
      <node id="438199" visible="true" version="1" />
      <way id="10808" visible="true" version="1">
        <nd ref="147788" />
        <nd ref="150133" />
        <nd ref="150145" />
      </way>
      <way id="10824" visible="true" version="1">
        <nd ref="156232" />
        <nd ref="156240" />
        <nd ref="156251" />
      </way>
      <way id="10821" visible="true" version="1">
        <nd ref="153211" />
        <nd ref="153230" />
        <nd ref="153243" /> 
      </way>
    

Like that Merged xml file, I want merge them without overlapping. In those case, it can be compare with node id and way id.

I'm sorry if my question sounded ambiguous. If there is something wrong, I will correct it as soon as possible.

0

There are 0 best solutions below