Xerces:获取特定DOMElement的原始XML

时间:2016-01-26 04:10:29

标签: xml dom xml-parsing xerces-c

我使用Xerces-C DOMLSParser 来解析XML输入源,并获得 DOMDocument 树。我正在导航到特定的 DOMElement 。我希望获得该元素及其子元素的原始XML标记。

对于XML,如下所示:

<positionreport>
  <config lastupdate="1114600280"> 
    <login user="some name" password="cleartext" />
    <reports>
     <report tab="1" name="Report One" />
     <report tab="2" name="Report Two" />
     <report tab="3" name="Third Report" />
     <report tab="4" name="Fourth Report" />
     <report tab="5" name="Fifth Report" />
    </reports>
  </config>
</positionreport>

我从DOMLSParser::parse()获得了一个DOMDocument,让我说我导航到与元素' Reports '对应的DOMElement。如何为该节点生成原始XML字符串,即:

<reports>
 <report tab="1" name="Report One" />
 <report tab="2" name="Report Two" />
 <report tab="3" name="Third Report" />
 <report tab="4" name="Fourth Report" />
 <report tab="5" name="Fifth Report" />
</reports>

有没有办法做到这一点?如果无法通过 DOMElement,DOMDocument,DOMLSParser 完成,有什么方法可以使用任何其他类型执行此操作而无需再次序列化?

我目前的计划是将XML文件作为字符流读入,并根据所需的XML标记对所需的子字符串进行正则表达式匹配。我不喜欢这个。

1 个答案:

答案 0 :(得分:0)

我没有太多使用过Xerces,但我认为你必须序列化DOMElement / DOMNode以获得它的原始XML标记:

virtual XMLCh* DOMLSSerializer::writeToString(const DOMNode * nodeToWrite, MemoryManager * manager = NULL)