r - 如何编写带有特殊字符的 xml 代码(使用 R xml 包)
问题描述
我正在尝试编写特定程序需要的一些 xml 文件,并且在某些文本中写入“特殊字符”时遇到问题,因此程序会抛出错误。
如何将特殊字符(特别是“>”)写入标签的属性?
library(XML)
xml <- xmlTree()
xml$addTag("events", close=FALSE, attrs = c(PackageMinimumVersionRequired="1.3") )
# '>' is a special character that gets rewritten as '>'
xml$addTag("schedule", close=TRUE,
attrs = c(time = paste("2000-01-01/1 -> +6-0-0", sep='') ) )
xml$addTag('party', close=FALSE, attrs = c(number='1')) #just putting this in to show I have other nodes
xml$closeTag() # close party
xml$closeTag() # close events
saveXML(xml, file = "testfile.xml", encoding = "UTF-8" )
'time' 属性写为: time="2000-01-01/1 - > ; +6-0-0"
我相信应该使用这些方面的东西,但还没有找到解决办法......
xmlCDataNode()
# or
xml$addCData
第二个问题 - 我如何为每个标签缩进一个新行?
xml 标头有自己的一行,但除此之外,所有标签都会水平堆叠在同一行中。我希望每个新标签都换行(我正在使用 notepad++ 或其他编辑器查看代码)。
解决方案
某些字符,尤其是<
and &
,必须始终进行转义。如果您的库没有转义这些字符,则输出将不是格式正确的 XML,并且将无法使用。
其他字符,例如>
、"
和'
,需要在特定条件下进行转义,许多库会无条件地转义它们,因为这是最容易做到的事情,而且一旦您通过解析器将 XML 放入其中,无论如何都没有任何区别。如果你真的想>
逃脱,你应该问自己为什么。仅仅是出于审美原因吗?如果下游软件依赖于未转义,那么下游软件就有缺陷——编写可供有缺陷的客户端使用的 XML 会占用大量 StackOverflow 流量,因此您手头有问题。
推荐阅读
- python - 有没有办法用 python 脚本修改谷歌文档?
- javascript - 创建相交值的数组
- assembly - 为什么即使 DPMI 主机处于活动状态,INT 31H 也无法正确设置?
- c++ - 为什么第二个连续的 for 循环执行得更快?
- string - 如何从 VB.Net 中的 Private Sub 调用公共函数?
- reactjs - 在内部选项卡之前加载的选项卡会导致错误“提供给选项卡组件的值无效”
- javascript - VsCode“Code Runner”产生相同的输出
- javascript - html文本内容未更新
- javascript - 获取错误 - 使用 POST 时不允许接收 405 GET 方法
- python - 为 Scipy.optimize.minimize 输入一组数据