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