我有一个.txt
格式的XML文件。
我想以这样的方式拆分此文件:我只获取<TEXT>
和</TEXT>
之间的文本,并将其另存为不同的文本文件或数据框。有人可以帮我解决一下如何在R中做到这一点吗?
我尝试使用grep函数来提取文本,但是我无法实现我的目标。我对文本挖掘非常陌生,如果有人能帮助我,那将是非常好的。
test_2=grep("[^<TEXT>] [$</TEXT>]",test,ignore.case=T,value=T)
答案 0 :(得分:0)
使用XML
library(XML)
doc <- xmlParse("test.txt")
sapply(xpathApply(doc, "//*/TEXT"), xmlValue)
然后你会得到一个角色向量并做你想做的事。
答案 1 :(得分:0)
首先我做了
install.packages("XML")
library(XML)
现在这有点棘手,因为您的文档(如上所示)没有root。如果你将它包装在
中<mydoc>
...
</mydoc>
或类似的东西,你可以用这个:
doc <- xmlRoot(xmlTreeParse("text.xml"))
df <- vector(length=length(doc))
for (i in 1:length(doc))
{
text_node <- doc[[i]]$children$text
text <- xmlToList(text_node)
df[i] <- text
}
现在假设你不能添加我上面做的人造根。您仍然可以将其解析为HTML,它更容忍无效文档。我也在这个例子中使用XPath(你也可以在上面的那个中):
doc <- htmlTreeParse("text_noroot.xml")
content <- doc$children$html
textnodes <- getNodeSet(content, "//text")
df <- vector(length=length(textnodes))
for (i in 1:length(textnodes))
{
text_node <- textnodes[[i]]$children$text
text <- xmlToList(text_node)
df[i] <- text
}