问题来源自CSDN社区:原贴见http://community.csdn.net/Expert/TopicView3.asp?id=5001302
楼主想做到的就是把XML Doc1 和 XML Doc2 合成为 XML Doc3 的样子,大概的效果就是把前几层结构相同的子项合并到一起.
示例文档XMLFILE1.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd59927" title="月饼" url=""></thing_id>
<thing_id id="59dddd7" title="豆沙包" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
<typekind text="小菜">
<typekindthinglist>
<thing_id id="dd59927" title="花生米" url=""></thing_id>
<thing_id id="59dddd7" title="蚕豆" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
</typekindchildtype>
</typekind>
</root>
示例文档XMLFILE2.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd599271" title="月11饼" url="">
</thing_id>
<thing_id id="59dddd7" title="豆沙包" url="">
</thing_id>
</typekindthinglist>
<typekindchildtype>
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url=""></thing_id>
<thing_id id="59dddd7" title="面条" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
</typekindchildtype>
</typekind>
</root>
合并的结果文档XMLFILE3.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd599271" title="月11饼" url="" />
<thing_id id="59dddd7" title="豆沙包" url="" />
<thing_id id="dd59927" title="月饼" url="" />
</typekindthinglist>
<typekindchildtype>
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url="" />
<thing_id id="59dddd7" title="面条" url="" />
</typekindthinglist>
<typekindchildtype />
</typekind>
<typekind text="小菜">
<typekindthinglist>
<thing_id id="dd59927" title="花生米" url="" />
<thing_id id="59dddd7" title="蚕豆" url="" />
</typekindthinglist>
<typekindchildtype />
</typekind>
</typekindchildtype>
</typekind>
</root>
解决思路:
观察每个分类节点
都具有相似的结构
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url=""></thing_id>
<thing_id id="59dddd7" title="面条" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
可简化为<typekind><typekindthinglist/><typekindchildtype/></typekind>
解决思路就是先找到每层的typekind列表
如果目标文档中存在路径相同text属性相同的typekind节点,则直接在此节点添加typekindthinglist和typekindchildtype节点集合,反之创建
对于typekindthinglist的节点本身亦然
如果typekingthinglist的thing_id集合中已有id属性相同的子节点,则不做任何处理(可能xmlfile1,xmlfile2中有相同路径相同id属性的thing_id,不认为是两种商品),反之添加thing_id节点
对于typekindchildtype结点下的每一个子节点,都是一个typekind
则递归重复以上过程
代码:
楼主想做到的就是把XML Doc1 和 XML Doc2 合成为 XML Doc3 的样子,大概的效果就是把前几层结构相同的子项合并到一起.
示例文档XMLFILE1.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd59927" title="月饼" url=""></thing_id>
<thing_id id="59dddd7" title="豆沙包" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
<typekind text="小菜">
<typekindthinglist>
<thing_id id="dd59927" title="花生米" url=""></thing_id>
<thing_id id="59dddd7" title="蚕豆" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
</typekindchildtype>
</typekind>
</root>
示例文档XMLFILE2.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd599271" title="月11饼" url="">
</thing_id>
<thing_id id="59dddd7" title="豆沙包" url="">
</thing_id>
</typekindthinglist>
<typekindchildtype>
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url=""></thing_id>
<thing_id id="59dddd7" title="面条" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
</typekindchildtype>
</typekind>
</root>
合并的结果文档XMLFILE3.XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<typekind text="食品">
<typekindthinglist>
<thing_id id="dd599271" title="月11饼" url="" />
<thing_id id="59dddd7" title="豆沙包" url="" />
<thing_id id="dd59927" title="月饼" url="" />
</typekindthinglist>
<typekindchildtype>
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url="" />
<thing_id id="59dddd7" title="面条" url="" />
</typekindthinglist>
<typekindchildtype />
</typekind>
<typekind text="小菜">
<typekindthinglist>
<thing_id id="dd59927" title="花生米" url="" />
<thing_id id="59dddd7" title="蚕豆" url="" />
</typekindthinglist>
<typekindchildtype />
</typekind>
</typekindchildtype>
</typekind>
</root>
解决思路:
观察每个分类节点
都具有相似的结构
<typekind text="主食">
<typekindthinglist>
<thing_id id="dd59927" title="米饭" url=""></thing_id>
<thing_id id="59dddd7" title="面条" url=""></thing_id>
</typekindthinglist>
<typekindchildtype>
</typekindchildtype>
</typekind>
可简化为<typekind><typekindthinglist/><typekindchildtype/></typekind>
解决思路就是先找到每层的typekind列表
如果目标文档中存在路径相同text属性相同的typekind节点,则直接在此节点添加typekindthinglist和typekindchildtype节点集合,反之创建
对于typekindthinglist的节点本身亦然
如果typekingthinglist的thing_id集合中已有id属性相同的子节点,则不做任何处理(可能xmlfile1,xmlfile2中有相同路径相同id属性的thing_id,不认为是两种商品),反之添加thing_id节点
对于typekindchildtype结点下的每一个子节点,都是一个typekind
则递归重复以上过程
代码:
|