tinyxml2使用中DeepClone函数和InsertAfterChild函数的两个问题
cky77 2018-09-14 05:06:55 RT,我有两个xml文件A.XML和B.xml
A.xml:
{
<root>
//插入的内容在这里
</root>
}
B.xml
{
<root>
<item1>中间包含很多节点和内容</item1>
<item2>中间包含很多节点和内容</item2>
<item3>中间包含很多节点和内容</item3>
</root>
}
我想要做的是根据一个根据一个序列比如2、1、3。在B.xml中找出对应的节点复制到A.xml的<root>节点中去。
第一个问题:在编码过程中,DeepClone函数在读取到B.xml中最后一个节点也就是3时,会报错:
0x004DEAFC 处有未经处理的异常(在 XMLParse.exe 中): 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
中断发生位置在XMLNode* clone = this->ShallowClone(target);
XMLNode* XMLNode::DeepClone(XMLDocument* target) const
{
XMLNode* clone = this->ShallowClone(target);
在读取B.xml的非最后一个节点时都是正常的。
第二个问题:在向A.xml插入节点时docXmltestPJ.InsertAfterChild(vernier, copy);第一个参数报错。vernier为要插入的节点的前一个兄弟节点。 afterThis->_parent != this这一句判断完就返回0了。导致插入不成功
XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis )
{
TIXMLASSERT( addThis );
if ( addThis->_document != _document ) {
TIXMLASSERT( false );
return 0;
}
TIXMLASSERT( afterThis );
if ( afterThis->_parent != this ) {
TIXMLASSERT( false );
return 0;
}
想请教各位,1能不能解释这两个问题。2有没有用tinyxml2实现我要的功能的代码。感谢