代码之家  ›  专栏  ›  技术社区  ›  Michael

Xerces:如何合并重复节点?

  •  3
  • Michael  · 技术社区  · 15 年前

    我的问题是:

    <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++)中有没有具体的方法?

    如果是,节点合并在生命周期的哪一点完成?每次插入时?在编写文件时,是否明确按需?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Totonga    15 年前

    如果使用xalan,则可以使用xpath查找元素并直接插入到正确的元素中。

    selectNodes("//root[@one="start"]")
    

    使用完整路径可能更好

    selectNodes("/abc/def/.../root[@one="start"]")
    

    selectNodes("./root[@one="start"]")
    

    xpath on wikipedia .

        2
  •  0
  •   Sahas    15 年前

    alpha 标记所有XML文档,并将它们的内容放入新文档的alpha中(如果它们还不存在)。