파이썬 처리 데이터의 XML 구문 분석 국외
-
16-09-2019 - |
문제
Python Drespat를 사용하여 XML 파일을 구문 분석하려고합니다. XML 파일에 다음 줄이 있습니다.
<Action><fail/></Action>
국외 거주자는 시작 및 엔드 태그를 식별하지만 & lt를 변환합니다. 캐릭터보다 적고 캐릭터보다 더 큰 경우에 동일하므로 다음과 같이 구문 분석합니다.
결과:
START 'Action'
DATA '<'
DATA 'fail/'
DATA '>'
END 'Action'
원하는 대신 :
START 'Action'
DATA '<fail/>'
END 'Action'
원하는 결과를 얻고 싶습니다. 해외 거주자가 엉망이되는 것을 어떻게 방지합니까?
해결책
국외 거주자는 엉망이되지 않습니다. <
단순히 문자를위한 XML 인코딩입니다 <
. 반대로, 국외 거주자가 리터럴을 반환한다면 <
, 이것은 XML 사양과 관련된 버그입니다. 즉, 물론 사용하여 탈출 한 버전을 다시 얻을 수 있습니다. xml.sax.saxutils.escape
:
>>> from xml.sax.saxutils import escape
>>> escape("<fail/>")
'<fail/>'
국외 파서는 또한 모든 문자열 데이터를 적합한 덩어리로 무료로보고 할 수 있으므로 직접 연결해야합니다.
다른 팁
Sax와 Stax Parsers는 모두 편리한 방법으로 문자열을 분해 할 수 있습니다 (Stax는 당신을 위해 조각을 조립하도록 강요하기위한 Coalesce 모드가 있지만).
그 이유는 스트리밍이 발생하는 특정 경우 소프트웨어를 작성하는 것이 종종 스트링 조각을 재 조립하는 오버 헤드에 신경 쓰지 않아도되기 때문입니다.
일반적으로 변수로 텍스트를 축적하고 다음 스타트 레미멘트 또는 Endlement 이벤트를 볼 때 내용을 사용합니다. 그 시점에서, 나는 또한 축적 된 텍스트 변수를 비워 지도록 재설정합니다.
제휴하지 않습니다 StackOverflow