XML 문서에서 요소 내의 요소에 액세스하려고합니다. 나는 네임 스페이스에 대해 배우기 시작했다는 사실이 나를 트립시키고 있다고 생각한다. XSD 헤더Nokogiri로 중첩 된 요소에 액세스
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 # => [# Nokogiri :: XML :: SyntaxError : 속성 이름을 분석하는 중 오류 발생>, # Nokogiri :: XML :: SyntaxError : 속성 생성 오류>, #, # ]'끝났다면 수정해야합니다. 오타가 잘못되었거나 구문 분석을 시도하기 전에 픽스 업을 수행해야합니다. –
고마워, 지금은 고쳐 졌다고 믿는다. – Mike