2010-05-24 4 views
0

lxml과 Python을 사용하여 XML 파일을 인쇄하려고합니다.lxml의 인코딩 제거 방법

>>> from lxml import etree 
>>> root = etree.Element('root') 
>>> child = etree.SubElement(root, 'child') 
>>> print etree.tostring(root, pretty_print = True, xml_declaration = True, encoding = None) 

출력 : : 당신이 볼 수 있듯이

<?xml version='1.0' encoding='ASCII'?> 
<root> 
    <child/> 
</root> 

, 내가 encoding = None 선언 그러나 여전히 최종 출력에 encoding = 'ASCII' 보여줍니다 여기에

는 코드입니다. 나는 그것이 예상된다고 생각한다. encoding 태그를 넣지 않으면 여전히 ASCII가 표시됩니다.

인코딩 부분이 아닌 XML 버전 태그를 얻을 수있는 방법이 있습니까? 나는 다음과 같이 결과를 출력한다 :

<?xml version='1.0'> 

답변

0

유효 XML이 출력되는 한 lxml.etree가 출력하는 것이 중요하지 않아야한다. 당신이 정말로, 당신은 문자열을 함께 접착제 수 있습니다하려면 : 당신이 그것을 제거 할 이유는 궁극적으로 XML이 아무것도 이해하려고에서의 문자셋 것을 알 필요가 있기 때문에

'<?xml version="1.0"?>\n' + etree.tostring(root, pretty_print = True, encoding = 'ASCII') 

그것은 불분명하다. XML 1.0 spec는 문자 세트를 추측하는 방법을 포함하고, 인코딩 선언의 이용 촉진 같다 :

[외부 정보]의 부재하여, 이것은 치명적인 오류 있지도 시작 엔터티 ... 인 Byte Order Mark 또는 UTF-8이 아닌 다른 인코딩을 사용하는 인코딩 선언. 된 XML 엔티티의 부호화 선언을 포함하지 않고 콘텐츠가 합법적 UTF-8 또는 UTF-16이 아닌 경우

... 부호화가 상위 프로토콜에 의해 결정된다 않는

, 또한 치명적인 오류라고 .

+0

um ok. 나는 그것을 살펴볼 것이다. 답변 해주셔서 감사합니다. – user225312

관련 문제