python
  • xml
  • twisted
  • twisted.words
  • 2010-01-19 3 views 0 likes 
    0

    XML 기본 객체 (twisted.words.xish.domish.Element)를 XML 문자열에서 완전히 만들 수 없다는 것에 놀랐습니다.원시 XML에서 twisted.words.xish.domish.Element를 만드는 방법

    msg = "<iq to='[email protected]' id='id123' type='get'> \ 
          <query xmlns='http://juick.com/query#messages' mid='123456'/> \ 
         </iq>" 
    iq = domish.Element(('','')) 
    iq.addRawXml(msg) 
    

    그러나 생성 : 가장 비슷하게 방법은

    iq.toXml() 
    
    u"<><iq to='[email protected]' id='id123' type='get'>    <query xmlns='http://juick.com/query#messages' mid='123456'/>  </iq></>" 
    

    내 자신 인 IElement 구현을 작성 제외하고 원시 XML을 사용하는 방법은 없나요?

    답변

    1

    이것은 내가 조각에 사용하는 것으로, 어딘가에있는 웹에서 발견 된 것입니다.

    from twisted.words.xish import domish 
    
    class ElementParser(object): 
        "callable class to parse XML string into Element" 
    
        def __call__(self, s): 
         self.result = None 
         def onStart(el): 
          self.result = el 
         def onEnd(): 
          pass 
         def onElement(el): 
          self.result.addChild(el) 
    
         parser = domish.elementStream() 
         parser.DocumentStartEvent = onStart 
         parser.ElementEvent = onElement 
         parser.DocumentEndEvent = onEnd 
         tmp = domish.Element(("", "s")) 
         tmp.addRawXml(s) 
         parser.parse(tmp.toXml()) 
         return self.result.firstChildElement() 
    
    +0

    참고 파서가 아닌 유니 STR 오브젝트를 수신한다 ((즉, 'parser.parse (tmp.toXml(). 인코딩 "UTF-8"))'). http://www.mail-archive.com/[email protected]/msg00432.html을 참조하십시오. – HoverHell

    관련 문제