2012-09-06 3 views
2

Nokogiri xml 판독기가 XML 구문에 엄격함을 발견했습니다. 따라서 이스케이프 처리되지 않은 앰퍼샌드 (예 : <tag> Garage & Driveway </tag>)와 같이 XML 내에서 유효하지 않은 문자가 발생하면 오류가 발생합니다. 나는 독자를 사용할 때Nokogiri :: XML :: Reader를 사용하여 잘못된 XML 처리

그래서 다음과 같이 큰 문서를 구문 분석을 통해

<root> 
    <items> 
    <tag>The & is invalid</tag> 
    </items> 
    <items> ... </items> 
<root> 

미드웨이 : 이와 같은 XML로

Entity: line 1056614: parser error : xmlParseEntityRef: no name 
      <tag>The & is invalid</tag> 
        ^

transmogrifier/gems/nokogiri-1.5.5/lib/nokogiri/xml/reader.rb:106:in `each' 

:

Nokogiri::XML::Reader(infile).each do |node| 
    # does stuff with node 
end 

이 오류가 발생합니다 . 나는 Nokogiri :: XML :: Parser가 (더) 정상적으로 이것을 처리하고 잘못된 모든 문자를 제거한다는 것을 알았으므로 좀 더 우아한 솔루션에 대한 희망을 준다.

이상하게도 나는 오류를 잡아 내고 각 구문 분석을 계속하는 것이 좋을 것입니다. 이걸 우아하게 처리하는 방법에 대한 제안이 있으십니까?

필자는 ParseOptions를 전달할 수있는 것으로 나타 났으 나 havent는이를 사용하여 운이 좋았다.

미리 감사드립니다.

답변

0

XML 오류를 훨씬 더 용인하는 Nokogiri::XML에서 Nokogiri::HTML으로 전환하면 도움이 될 것입니다.