我有以下 XML 文档:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:apps=\"http://schemas.google.com/apps/2006\" xmlns:gd=\"http://schemas.google.com/g/2005\">
<apps:property name=\"memberId\" value=\"Tom\"/>
</atom:entry>
我要做的就是获取应用程序:属性节点。然而,我在 LibXML 中尝试的一切都没有返回。
从此处阅读LibXML::XML::XPath 的 LibXML 文档。我假设我不需要指定这两个命名空间,因为它们是在根节点上定义的。
这是我尝试过的:
@document.find('/apps:property')
@document.find('//apps:property')
@document.find('/atom:entry/apps:property')
@document.find('//atom:entry/apps:property')
@document.find('/property')
@document.find('/atom:entry')
@document.find('//property')
@document.find('/entry')
以上都没有返回指定文档的结果。我也用 atom 和 apps 命名空间定义的不同组合尝试了它们,但似乎没有效果。
如果有人能告诉我我必须错过什么非常简单的事情,那将不胜感激。
事实证明,问题源于动态创建的文档,而不是从文件中读取。
当我将文档写入文件并读取它时,我可以搜索它。当我创建文档时,创建根元素并以编程方式添加子元素,每次尝试搜索时我都会得到 nil,奇怪的是每个都可以正常工作。在我可以搜索之前,我是否必须以某种方式“完成”或对文档做一些其他愚蠢的事情?