我想比较xml文件(B)和C ++中现有的xml文件(A),两个文件应该具有相同的节点和属性,但是文件B中的属性值可以与文件A不同,并且任何属性值都不应相同B文件中为空白。
蛮力方法是将文件A的结构存储到地图和矢量等数据结构中,但是我要比较25-30个不同的文件。
文件A
<MASTER>
<SERIAL COM="COM1" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<GPS COM="COM2" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<ARM_STATUS>
<ARM ID="1" STATUS="true" />
<ARM ID="2" STATUS="true" />
<ARM ID="3" STATUS="true" />
<ARM ID="4" STATUS="TRUE" />
<ARM ID="5" STATUS="false" />
<ARM ID="6" STATUS="false" />
<ARM ID="7" STATUS="false" />
<ARM ID="8" STATUS="false" />
</ARM_STATUS>
<MODE_STATUS>
<MODE NAME="FIXED_MODE" STATUS= "FALSE" />
<MODE NAME="VEHICLE_ACTUATED_SPLIT_MODE" STATUS= "TRUE" />
<MODE NAME="VEHICLE_ACTUATED_FULL_MODE" STATUS= "FALSE" />
<MODE NAME="ADAPTIVE_MODE" STATUS = "FALSE" />
<MODE NAME="SEMI_ACTUATED_MODE" STATUS = "FALSE" />
</MODE_STATUS>
</MASTER>
文件B(有效)
<MASTER>
<SERIAL COM="COM1" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<GPS COM="COM2" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<ARM_STATUS>
<ARM ID="1" STATUS="true" />
<ARM ID="2" STATUS="true" />
<ARM ID="3" STATUS="false" />
<ARM ID="4" STATUS="false" />
<ARM ID="5" STATUS="false" />
<ARM ID="6" STATUS="false" />
<ARM ID="7" STATUS="false" />
<ARM ID="8" STATUS="false" />
</ARM_STATUS>
<MODE_STATUS>
<MODE NAME="FIXED_MODE" STATUS= "true" />
<MODE NAME="VEHICLE_ACTUATED_SPLIT_MODE" STATUS= "TRUE" />
<MODE NAME="VEHICLE_ACTUATED_FULL_MODE" STATUS= "FALSE" />
<MODE NAME="ADAPTIVE_MODE" STATUS = "FALSE" />
<MODE NAME="SEMI_ACTUATED_MODE" STATUS = "FALSE" />
</MODE_STATUS>
</MASTER>
文件B(无效)
注意:: -缺少元素的ID值
<MASTER>
<SERIAL COM="COM1" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<GPS COM="COM2" BAUD_RATE="9600" DATA="8" PARITY="none" STOP="one" RETRY="1000"/>
<ARM_STATUS>
<ARM ID="1" STATUS="true" />
<ARM ID="2" STATUS="true" />
<ARM ID="3" STATUS="true" />
<ARM ID="4" STATUS="false" />
<ARM ID="5" STATUS="false" />
<ARM ID="6" STATUS="false" />
<ARM ID="7" STATUS="false" />
<ARM ID="" STATUS="false" />
</ARM_STATUS>
<MODE_STATUS>
<MODE NAME="FIXED_MODE" STATUS= "true" />
<MODE NAME="VEHICLE_ACTUATED_SPLIT_MODE" STATUS= "TRUE" />
<MODE NAME="VEHICLE_ACTUATED_FULL_MODE" STATUS= "FALSE" />
<MODE NAME="ADAPTIVE_MODE" STATUS = "FALSE" />
<MODE NAME="SEMI_ACTUATED_MODE" STATUS = "FALSE" />
</MODE_STATUS>
</MASTER>