문제

Python Drespat를 사용하여 XML 파일을 구문 분석하려고합니다. XML 파일에 다음 줄이 있습니다.

<Action>&lt;fail/&gt;</Action>

국외 거주자는 시작 및 엔드 태그를 식별하지만 & lt를 변환합니다. 캐릭터보다 적고 캐릭터보다 더 큰 경우에 동일하므로 다음과 같이 구문 분석합니다.

결과:

START 'Action'
DATA '<'
DATA 'fail/'
DATA '>'
END 'Action'

원하는 대신 :

START 'Action'
DATA '&lt;fail/&gt;'
END 'Action'

원하는 결과를 얻고 싶습니다. 해외 거주자가 엉망이되는 것을 어떻게 방지합니까?

도움이 되었습니까?

해결책

국외 거주자는 엉망이되지 않습니다. &lt; 단순히 문자를위한 XML 인코딩입니다 <. 반대로, 국외 거주자가 리터럴을 반환한다면 &lt;, 이것은 XML 사양과 관련된 버그입니다. 즉, 물론 사용하여 탈출 한 버전을 다시 얻을 수 있습니다. xml.sax.saxutils.escape:

>>> from xml.sax.saxutils import escape
>>> escape("<fail/>")
'&lt;fail/&gt;'

국외 파서는 또한 모든 문자열 데이터를 적합한 덩어리로 무료로보고 할 수 있으므로 직접 연결해야합니다.

다른 팁

Sax와 Stax Parsers는 모두 편리한 방법으로 문자열을 분해 할 수 있습니다 (Stax는 당신을 위해 조각을 조립하도록 강요하기위한 Coalesce 모드가 있지만).

그 이유는 스트리밍이 발생하는 특정 경우 소프트웨어를 작성하는 것이 종종 스트링 조각을 재 조립하는 오버 헤드에 신경 쓰지 않아도되기 때문입니다.

일반적으로 변수로 텍스트를 축적하고 다음 스타트 레미멘트 또는 Endlement 이벤트를 볼 때 내용을 사용합니다. 그 시점에서, 나는 또한 축적 된 텍스트 변수를 비워 지도록 재설정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top