R语言中saveXML保存XML文件如何保留树形结构?
解决R中saveXML保存XML为树形结构的问题
嘿,这个问题我之前也踩过坑!其实saveXML()函数本身就自带了控制输出格式的参数,只是默认没开启缩进而已,很容易解决~
核心解决方案
在调用saveXML()的时候,只需要加上两个关键参数就能让保存的XML文件保留清晰的树形结构:
indent = TRUE:开启层级缩进,默认会用2个空格作为缩进量;你也可以直接传数值自定义,比如indent = 4就是每个层级缩进4个空格indentAttrs = TRUE(可选):如果你的XML节点带有属性,这个参数会让属性单独换行缩进,进一步提升可读性
示例代码演示
假设你用这段代码生成示例XML:
library(XML) # 创建XML文档 doc <- newXMLDoc() root <- newXMLNode("root", doc = doc) # 添加子节点和属性 fruit_list <- newXMLNode("fruit_list", parent = root) newXMLNode("fruit", attrs = list(id = "1"), "Apple", parent = fruit_list) newXMLNode("fruit", attrs = list(id = "2"), "Banana", parent = fruit_list)
原来的保存方式(输出一整行)
saveXML(doc, "unformatted.xml")
这个操作会把所有内容压缩成一行,完全没有可读性。
修改后的保存方式(树形结构)
saveXML(doc, "formatted.xml", indent = TRUE, indentAttrs = TRUE)
保存后的formatted.xml会呈现这样的结构化格式:
<?xml version="1.0"?> <root> <fruit_list> <fruit id="1"> Apple </fruit> <fruit id="2"> Banana </fruit> </fruit_list> </root>
补充说明
如果你的XML是从外部读取的(比如用xmlParse()加载的),这个方法同样适用,直接把读取后的XML对象传入saveXML()并加上上述参数即可。
内容的提问来源于stack exchange,提问作者EpiBlake
相关产品推荐
相关产品推荐

