我必须解析与此类似的 XML-TEI 文档:
<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader> ... </teiHeader>
<text>
<body>
<head rend="Body A">DOCUMENT_TITLE</head>
<div rend="entry">
<head rend="time">TIME_INFORMATION</head>
<p rend="Body A"> INFORMATION A</p>
<p rend="content">
<hi rend="italic"> CONTENT </hi>
</p>
</div>
我想提取 TIME_INFORMATION 字符串。有人可以给一些建议吗?
我可以使用命令轻松获取内容
doc <- htmlParse(paste0(mypath,xml_path))
content<-unlist(xpathSApply(doc,'//p[@rend="content"]//hi[@rend="italic"]',xmlValue))
但是我怎样才能只提取TIME_INFORMATION呢?我试过了
doc <- htmlParse(paste0(mypath,xml_path))
content<-unlist(xpathSApply(doc,'//div//head[@rend="time"]',xmlValue))
但我得到一个空列表。 我发现的唯一方法是获取每个条目“div”的整体并使用正则表达式解析日期,但我想避免这种情况。
无论如何,这样做时我注意到当我跑步时:
div <- getNodeSet(doc2, '//div')
我获得的原始 XML 结构略有不同,似乎标签消失了。例如,
div[1]
是:
> div[1]
[[1]]
<div rend="entry">
London, June 19th, 1854.
<p rend="Body A">Oxford, University Archive </p>
<p rend="content">
<hi rend="italic"> CONTENT </hi></p>
</div>
使用从问题中提取的
Lines
并在最后的注释中显示
library(XML)
doc <- htmlTreeParse(Lines, asText = TRUE, useInternalNodes = TRUE)
xpathSApply(doc, '//div[@rend="entry"]/text()[1]', xmlValue) |> trimws()
## [1] "TIME_INFORMATION"
Lines <- '<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader> ... </teiHeader>
<text>
<body>
<head rend="Body A">DOCUMENT_TITLE</head>
<div rend="entry">
<head rend="time">TIME_INFORMATION</head>
<p rend="Body A"> INFORMATION A</p>
<p rend="content">
<hi rend="italic"> CONTENT </hi>
</p>
</div>
'