Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPath在R中的XML文档上失败_R_Xpath_Xml Parsing - Fatal编程技术网

XPath在R中的XML文档上失败

XPath在R中的XML文档上失败,r,xpath,xml-parsing,R,Xpath,Xml Parsing,我很高兴能找到一些关于使用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>

我很高兴能找到一些关于使用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>
它返回以下错误:

XPath错误:未定义的命名空间前缀xmlXPathCompOpEval:参数 错误XPath错误:无效的表达式Erreur dans xpathApply.XMLInternalDocument(doc、path、fun、…、名称空间= 名称空间:计算xpath表达式时出错 数据(//tei:name/@ref[以(,'Actr')开头])


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

XML包不能很好地处理默认命名空间。在使用xpath样式表达式之前,需要明确指定命名空间的名称。类似于

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

注意:我还删除了
data()
并更改了
xmlValue
。我不确定您试图用
data()做什么
,但这里我们返回的是属性,而
xmlValue
似乎不喜欢使用属性。

我不熟悉R,但它似乎无法识别与
tei:
前缀关联的名称空间。如果有办法在R中声明名称空间,请尝试;否则,请为该元素使用通配符
/*:name/@ref[…]
。请仔细阅读XPath和XQuery(这是XPath的超集)之间的区别,并使用正确的标记。
xpathsaply
不支持XQuery(这不是问题,您在问题中只使用了一个简单的XPath表达式).Perfect。不过结尾缺少一个括号。它返回以“Actr”开头的所有属性值的列表。非常感谢。
xpathSApply(data1715, 
     "//tei:name/@ref[starts-with(.,'Actr')]", 
     unname,
     namespaces=c(tei=getDefaultNamespace(data1715)[[1]]$uri))