当 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。