如何在带有命名空间的 XML 文档上使用 LibreOffice FILTERXML 函数?

如何在带有命名空间的 XML 文档上使用 LibreOffice FILTERXML 函数?

当 XML 文档的文档元素具有指定的命名空间时,我很难使用 FilterXML() 函数获取 XML 节点的值。

例子:

<?xml version="1.0" encoding="UTF-8"?>
<DocumentElement xmlns="XMLSchemaDefinition.xsd">
    <字段>
        <值> 100 </值>
    </字段>
</DocumentElement>
= FILTERXML(A1, “/文档/元素/值[1]”)


我设法通过以下方式删除命名空间来使 FilterXML 正常工作:

= FILTERXML(SUBSTITUTE(A1, "<DocumentElement xmlns=""XMLSchemaDefinition.xsd"">", "<DocumentElement>"), "/DocumentElement/Field/Value[1]")


有没有办法获取 XML 节点的值而不必删除命名空间?

我目前正在使用 LibreOffice 版本:5.0.5.2

答案1

像这样忽略命名空间:

= FILTERXML(A1, "/*[name()='DocumentElement']/*[name()='Field']/*[name()='Value'][1]")

https://stackoverflow.com/questions/5239685/xml-namespace-breaking-my-xpath

相关内容