我试图访问XML文档中的元素内的元素。我认为我刚刚开始了解命名空间的事实让我感到沮丧。使用Nokogiri访问嵌套元素
XSD头
xsd:schema targetNamespace="urn:gtig:/my/namespace" xmlns:XX="urn:gtig:/my/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
因为原文件不符合任何对架构,我需要遍历元素和更新。但我似乎无法访问xml结构中的所有元素。这是像我这样的循环:
这只是正常:
animals = @builder.doc.xpath("//myns:animal", 'myns' = 'urn:gtig:/my/namespace')
animals.each { |a|
a.attributes['type'].remove
a['newtype'] = "mammal"
但环的不是这个下一部分:
c = a.xpath('cat/siamese')
这也不:
c = a.xpath("//myns:cat/siamese", 'myns' = 'urn:gtig:/my/namespace')
“ c“是空的。所以,我能够访问动物,但不能访问它们中的元素。
XML文档
<message xmlns="urn:gtig:/my/namespace" xmlns:XX="urn:gtig:/my/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<animal type="mammal">
<cat>
<siamese>value</siamese>
</cat>
</animal>
</message>
请阅读“[mcve]”。您的XML无效:'doc.errors#=> [#,#,#,#]'如果已经存在,您将需要修复它错误输入,以准确地反映它应该是什么,或者,如果源代码中出现错误,则需要在尝试解析之前进行修复。 –
谢谢,我相信现在已经修好了。 – Mike