Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311353
  • 博文数量: 42
  • 博客积分: 451
  • 博客等级: 下士
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 18:24
文章分类

全部博文(42)

文章存档

2015年(1)

2013年(9)

2012年(19)

2011年(13)

分类: C/C++

2013-01-21 17:31:45

查看xml文档:

    
        some text
        another text
        another text 2
    
删除value2这个节点:
if ( !xmlStrcmp( node->name, (const xmlChar*)"value2") )
{
	xmlNodePtr node_to_del = node;
	node = node->next;	
	xmlUnlinkNode( node_to_del );
	xmlFreeNode( node_to_del );
}  
再次查看xml文档:

    
        some text

        another text 2
    
留下空行,相当别扭啊。

讲讲xml文档的结构先,其肉眼没看见的结构如下(以value1、value2、value3为例):
文本节点 ( "<0d>       " )
value1 节点
文本节点 ( "<0d>       " )
value2节点
文本节点 ( "<0d>       " )
value3节点

当使用xmlUnlinkNode删除value2节点时,xml文档剩下如下内容:
文本节点 ( "<0d>       " )
value1 节点
文本节点 ( "<0d>       " )
文本节点 ( "<0d>       " )
value3节点
文本节点 ("<0d>   ") 注意上面的两行文本节点,这就是产生空白行的原因。我们对症下药,删除value2节点前面那个文本节点即可:
xmlUnlinkNode(cur); /* delete the value2 node */
xmlFreeNode(cur);
cur = tmpPtr;
tmpPtr = cur->prev;
xmlUnlinkNode(tmpPtr); /* delete text node */
xmlFreeNode(tmpPtr);
xmlSaveFile("test.xml", doc);/* 注意要保存好文档 */

参考:
阅读(5340) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chenjintao_ii2013-01-21 17:34:49

CU新的风格太难弄了,里面的格式有误,不好修改。