2009-05-31 6 views
1

나는 파이썬에서 XML 문서를 만드는 중입니다. 우리는 xml.dom 패키지를 사용하여 xml 문서를 만듭니다. 우리는 문자를 생산하고자하는 문제가 있습니다 & # x03c6; & # x03c6;입니다. 그러나 문자열을 텍스트 노드에 넣고 toxml()을 호출하면 & amp; # x03c6;이됩니다. 현재의 솔루션은 toxml()의 결과에 saxutils.unescape()를 사용하는 것이지만 xml을 두 번 파싱해야하기 때문에 이상적이지 않습니다.파이썬에서 XML 문자 xml.dom

dom 패키지에 "& # x03c6;"을 인식하게 할 수 있습니까? XML 문자로?

답변

1

나는 텍스트 노드의 .data 필드가 & 어디서 XML 엔티티 (포함하지 않는 "분석"데이터로 (지금까지 내가 이해)되어 있기 때문에 당신이 그것을에 \u03c6와 유니 코드 문자열을 사용할 필요가 있다고 생각 XML로 다시 만들 때). 당신이 출력에 비 ASCII 문자를 엔티티로 표현되어 있는지 확인하려는 경우, 당신은 할 수 :

import codecs 

def ent_replace(exc): 
    if isinstance(exc, (UnicodeEncodeError, UnicodeTranslateError)): 
    s = [] 
    for c in exc.object[exc.start:exc.end]: 
     s.append(u'&#x%4.4x;' % ord(c)) 
    return (''.join(s), exc.end) 
    else: 
    raise TypeError("can't handle %s" % exc.__name__) 

codecs.register_error('ent_replace', ent_replace) 

x.toxml().encode('ascii', 'ent_replace')를 사용합니다.

관련 문제