R:替换XML的CDATA部分中的实体
我有这样一个XML文件:R:替换XML的CDATA部分中的实体,xml,r,Xml,R,我有这样一个XML文件: <TextBody> <![CDATA[First line.&#10;Second line.]]> </TextBody> 所以我尝试了XMLpackage: xmlParse("<TextBody><![CDATA[First line.&#10;Second line.]]></TextBody>", replaceEntities=T
<TextBody>
<![CDATA[First line.&#10;Second line.]]>
</TextBody>
所以我尝试了XML
package:
xmlParse("<TextBody><![CDATA[First line.&#10;Second line.]]></TextBody>",
replaceEntities=TRUE)
xmlParse(“”,
replaceEntities=TRUE)
然后我被困在这第一步,因为replaceEntities
选项在这里似乎不起作用,我仍然得到&#10;解析文本中的代码>
任何人都可以告诉我如何从这个XML中提取正确的文本吗?我也无法让replaceEntities
工作,因此您可以使用gsub
xpathSApply(doc, "//TextBody", function(x) gsub("&#10;", "\n", xmlValue(x) ))
[1] "First line.\nSecond line."
此外,添加xmlParse options=NOENT或replaceEntities=TRUE不会更改以下任何结果。我总是在CDATA中获取实体引用
doc <- xmlParse("<a>test " ' < > &</a>")
xpathSApply(doc, "//a", xmlValue)
[1] "test \" ' < > &"
doc <- xmlParse("<a><![CDATA[test " ' < > &]]></a>")
xpathSApply(doc, "//a", xmlValue)
[1] "test " ' < > &"
doc”)
xpathSApply(doc,“//a”,xmlValue)
[1] “测试”
我也无法让replaceEntities
工作,所以您可以使用gsub
xpathSApply(doc, "//TextBody", function(x) gsub("&#10;", "\n", xmlValue(x) ))
[1] "First line.\nSecond line."
此外,添加xmlParse options=NOENT或replaceEntities=TRUE不会更改以下任何结果。我总是在CDATA中获取实体引用
doc <- xmlParse("<a>test " ' < > &</a>")
xpathSApply(doc, "//a", xmlValue)
[1] "test \" ' < > &"
doc <- xmlParse("<a><![CDATA[test " ' < > &]]></a>")
xpathSApply(doc, "//a", xmlValue)
[1] "test " ' < > &"
doc”)
xpathSApply(doc,“//a”,xmlValue)
[1] “测试”