我的问题是:
如果我有以下XML:
<root>
<alpha one="start">
<in>1</in>
</alpha>
</root>
然后我将添加以下路径:
<root><alpha one="start"><out>2</out></alpha></root>
导致
<root>
<alpha one="start">
<in>1</in>
</alpha>
</root>
<root>
<alpha one="start">
<out>2</out>
</alpha>
</root>
我希望能够将其转换为:
<root>
<alpha one="start">
<in>1</in>
<out>2</out>
</alpha>
</root>
除了自己实施(不想今天重新发明轮子), 在Xerces(2.8,C ++)中有没有特定的方法呢?
如果是这样,DOMDocuments生命的哪一点是节点合并完成了?每次插入?在撰写文件时,明确要求?
感谢。
答案 0 :(得分:1)
如果您使用xalan,则可以使用xpath查找元素并直接插入相关元素。
以下代码可能很慢但返回属性“one”设置为“start”的所有“root”元素。
selectNodes("//root[@one="start"]")
使用完整路径
可能更好selectNodes("/abc/def/.../root[@one="start"]")
或者您已经拥有父元素工作相对
selectNodes("./root[@one="start"]")
我想要获得基本概念xpath on wikipedia。
答案 1 :(得分:0)
如果您知道容器标签的名称,并且存在各种不同的标签,那么这不是一分钟的任务吗?
在您的示例中,获取指向所有XML文档中alpha
标记的指针,并将所有这些文档的内容放入新文档的alpha中(如果它们不存在)。
这并不像重新发明轮子那么糟糕。我不熟悉Xerces,但是使用libxml ++,我会称之为一个简单的任务。