2012-09-10 3 views
1

XML 문서에서 node를 이스케이프 처리하려고합니다. 노드에 대한 원시 텍스트는 다음과 같습니다Python에서 ElementTree의 xml 텍스트를 이스케이프 처리하지 않습니다.

infile = ET.parse("C:/userfiles/EXP011/SESAME_60/SESAME_60_runinfo.xml") 
r = infile.getroot() 
XMLNS = "{http://example.com/foo/bar/runinfo_v4_3}" 
x=r.find(".//"+XMLNS+"Notes") 
print(x.text) 

내가 얻을 것으로 예상 : 다음과 같이

<Notes>{&quot;Phase&quot;: 0, &quot;Flipper&quot;: 0, &quot;Guide&quot;: 0,  
&quot;Sample&quot;: 0, &quot;Triangle8&quot;: 0, &quot;Triangle5&quot;: 0,  
&quot;Triangle4&quot;: 0, &quot;Triangle7&quot;: 0, &quot;Triangle6&quot;: 0,  
&quot;Triangle1&quot;: 0, &quot;Triangle3&quot;: 0, &quot;Triangle2&quot;: 0}</Notes> 

내가 텍스트를 당기는거야 대신,

{"Phase": 0, "Flipper": 0, "Guide&quot": 0,  
"Sample": 0, "Triangle8": 0, "Triangle5": 0,  
"Triangle4": 0, "Triangle7": 0, "Triangle6": 0,  
"Triangle1": 0, "Triangle3": 0, "Triangle2": 0} 

을하지만, 내가 가지고있어 :

{&quot;Phase&quot;: 0, &quot;Flipper&quot;: 0, &quot;Guide&quot;: 0,  
&quot;Sample&quot;: 0, &quot;Triangle8&quot;: 0, &quot;Triangle5&quot;: 0, 
&quot;Triangle4&quot;: 0, &quot;Triangle7&quot;: 0, &quot;Triangle6&quot;: 0, 
&quot;Triangle1&quot;: 0, &quot;Triangle3&quot;: 0, &quot;Triangle2&quot;: 0} 

나는 어떻게 얻습니까 네스케이프 된 문자열?

+1

ElementTree하지 언 이스케이프'"'당신이 일반적으로 "..'XML에'내 대답은 같은 이유로 잘못 –

답변

1

사용 HTMLParser.HTMLParser() :

In [8]: import HTMLParser  

In [11]: HTMLParser.HTMLParser().unescape('&quot;') 
Out[11]: u'"' 

saxutils는 &lt;, &gt;&amp; 처리하지만, 그것은 &quot;을 처리하지 않습니다. `하지 않습니다 * 필요성

In [9]: import xml.sax.saxutils as saxutils 

In [10]: saxutils.unescape('&quot;') 
Out[10]: '&quot;'  
+1

아주 정확한"'탈출하지 * 필요 *을하기 때문에 작업을 수행 *를 XML로 인용하기 때문에 saxutils 모듈은 ElementTree와 마찬가지로 처리하지 않습니다. –

+0

감사합니다. 그랬어. 언젠가 나는 서버 devs와 이야기하고 왜 서버가 따옴표를 이스케이프 처리하는지 알아 내야 할 것이다. – user640078

관련 문제