大家好,又见面了,我是你们的朋友全栈君。
/options参数设定成XML_PARSE_NOBLANKS,否则的话是不会在结点后面添加回车的。/
doc = xmlReadFile(docname, “UTF-8”, XML_PARSE_NOBLANKS); //读取xml文件时忽略空格
/把xmlSaveFormatFile的format参数修改成1,否则在使用xmlReadFile打开的xml文件时,在生成的xml文件里是会把所有的结点都放到一行里显示。/
xmlSaveFormatFile (docname, doc, 1);
以上内容转载于:https://blog.csdn.net/yezhen910328/article/details/41280451
方法一:
读取xml采用去除空白的模式,在最后保存时让libxml自动补充空白。
doc = xmlReadFile(docname, "UTF-8", XML_PARSE_NOBLANKS);
// 此处可加入xml增删修改处理...
nRel = xmlSaveFormatFileEnc(docname, doc, "UTF-8", 1);
这种方法是最简单的,若原来功能已经做好了,只需要修改很少代码就可以达到效果;而且此方法大多数情况下都是有效可行的。
方法二:
插入新节点时,在后面多插入一个Text节点,内容带换行字符”\n”;若当前节点没有文本内容,可以设Content内容,同样带”\n”。
node1 = xmlNewNode(NULL,BAD_CAST"DataNode");
node2 = xmlNewText(BAD_CAST "\n ");
// 此处node1可加入额外属性设置代码...
xmlAddChild(node, node1);
xmlNodeSetContent(node1, BAD_CAST "\n ");
xmlAddNextSibling(node1, node2);
方法一无法达到效果,或不能使用NOBLANKS模式,也可以尝试用此方法二;本方法是一定可行的,只是控制上稍微麻烦一些。
转载于:https://www.cnblogs.com/yisonli/p/4186359.html
但是我个人感觉上面的方法二麻烦,可以通过在xmlSaveFormatFile(xmlFileName,doc,1);代码之前需要增加两行代码
xmlKeepBlanksDefault(0) ;//libxml2 global variable .
xmlIndentTreeOutput = 1 ;// indent .with \n
方法来达到自动换行的效果。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158146.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...