gpt4 book ai didi

r - XPath 在 R 中的 XML 文档上失败

转载 作者:行者123 更新时间:2023-12-03 17:33:59 25 4
gpt4 key购买 nike

我很高兴能在 R 中找到有关 XML 操作的帮助。

我正在尝试对我的 XML/TEI 文件进行 XPath。这是它的结构:

<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<text>
<body>
<div>
<p>
<seg>
<name ref="Actr1235">Jen B.</name>frate M. <name ref="Actr1234">Léard B.</name> rhoncus orci quis luctus ultrices <note place="margin-left">1713 &amp; 1714</note>, a été
vehicula cursus nunc, at sagittis lorem aliquet sed <name ref="Actr1236"> Jaes L.</name>
aeman graeca <name type="place">Digo</name> iaculis volutpat risu <name ref="Cole14">la
Charias</name>. M. <name ref="Actr1236">Laure</name> bibendum augue erat, fermentum semper. M. <name ref="Actr1235">B.</name> bibendum augue erat, fermentum semper
</seg>
</p>
</div>
</body>
</text>
</TEI>

我想提取 <name> 中以“Actr”开头的所有属性值标签。
我在 XMLeditor 中尝试过这个 XPath //tei:name/@ref[starts-with(., 'Actr')]它正在工作。

现在,我正在尝试使用 R 将查询的结果放入数据框中,使用 XML 包来解析文档
library(XML)
data1715<-xmlParse("My_document.xml")
name_query<-xpathSApply(data1715, "data(//tei:name/@ref[starts-with(., 'Actr')])", xmlValue)

它返回以下错误:

XPath error : Undefined namespace prefix xmlXPathCompOpEval: parameter error XPath error : Invalid expression Erreur dans xpathApply.XMLInternalDocument(doc, path, fun, ..., namespaces = namespaces, : error evaluating xpath expression data(//tei:name/@ref[starts-with(., 'Actr')])



在这种情况下如何定义命名空间?

最佳答案

XML package 不能很好地处理默认命名空间。在使用 xpath 样式表达式之前,您需要明确为命名空间分配名称。像这样的东西怎么样

xpathSApply(data1715, 
"//tei:name/@ref[starts-with(.,'Actr')]",
unname,
namespaces=c(tei=getDefaultNamespace(data1715)[[1]]$uri))

注意我也删除了 data()并更改了 xmlValue .我不确定你想用 data() 做什么, 但这里我们返回属性和 xmlValue似乎不喜欢使用属性。

关于r - XPath 在 R 中的 XML 文档上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com