【问题标题】:How to create an empty DOMElement如何创建一个空的 DOMElement
【发布时间】:2008-10-21 20:12:07
【问题描述】:

我在我的项目中使用 Xerces-c,并且想创建一个 DOMElement 而不必创建一个全新的 DOMDocument。这样的事情可能吗?

【问题讨论】:

    标签: c++ xml xerces


    【解决方案1】:

    我还没有看到方法。 AFAIK DOMDocument 充当“内存池”,所有元素都在此池中创建。在 Xerces docs 我们看到:

    由 DOMDocument::createXXXX 创建的对象 用户可以调用 release() 函数来指示任何孤立节点的释放。当一个孤立节点被释放时,其关联的子节点也将被释放。访问已发布的节点将导致意外行为。这些孤立节点最终将在其所有者文档发布时释放(如果尚未这样做)

    我已经解决了这种情况,方法是保留一个 便笺本 DOMDocument,并使用它来创建片段或孤立节点,并在我准备好时将它们应用到目标文档中。例如

    // Create a fragment holding two sibling elements. The first element also has a child.
    DOMDocumentFragment* frag = scratchDom->createDocumentFragment();
    DOMNode* e1 = frag->appendChild( frag->getOwnerDocument()->createElement("e1") );
    e1->appendChild( e1->getOwnerDocument()->createElement("e1-1") );
    DOMNode* e2 = frag->appendChild( frag->getOwnerDocument()->createElement("e2") );
    ...
    // Paste the contents of the fragment into a "parent" node from another document
    DOMNode* parentFromOtherDom = ...;
    parentFromOtherDom->appendChild( parentFromOtherDom->getOwnerDocument()->adopt(frag) );
    scratchDom->removeChild(frag);
    

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2022-11-11
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多