xml.dom.minidom을 사용하여 만든 노드 xml.dom.Node 객체의 컬렉션이 있습니다. 노드 객체의 toxml() 메소드를 사용하여 문자열로 변환하여 데이터베이스에 개별적으로 저장합니다.파이썬에서 xml.dom.minidom 노드를 나타내는 문자열을 구문 분석하는 방법은 무엇입니까?
문제는 필자가 일종의 파서 (parser)를 사용하여 적절한 노드 객체로 다시 변환 할 수 있기를 바랍니다. 지금까지 파이썬과 함께 제공되는 다양한 라이브러리가 Expat를 사용하여 ''또는 실제로 올바른 XML 문자열이 아닌 문자열을 구문 분석하지 않습니다.
그럼 누구에게 아이디어가 있습니까? 어떤 방법으로 노드를 pickle하고 나서 unpickle 할 수 있다는 것을 알았지 만 불쾌감을 느끼고 유지 보수 목적으로 읽을 수있는 형태로 저장하고 싶습니다. 확실히 할 일이 있을까요? 의심에 응답
이것은,는 I의 의미 예 가능하다는 표현 "() .toxml"있어서 무언가를 만들지 않는다 말하면
>>> import xml.dom.minidom
>>> x=xml.dom.minidom.parseString('<a>foo<b>thing</b></a>')
>>> x.documentElement.childNodes[0]
<DOM Text node "u'foo'">
>>> x.documentElement.childNodes[0].toxml()
u'foo'
>>> xml.dom.minidom.parseString(x.documentElement.childNodes[0].toxml())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/minidom.py", line 1928, in parseString
return expatbuilder.parseString(string)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: syntax error: line 1, column 0
그 국외 거주자 (따라서 밖으로 상자 parseString의) 구문 분석됩니다.
내가 원하는 것은 u'foo '를 텍스트 노드로 구문 분석하는 것입니다. 나는. .toxml()의 효과를 되돌릴 수있는 내용
'toxml()'이 잘못된 XML 조각을 어떻게 생성하는지 알지 못한다. 따라서'toxml()'에 의해 생성 된 모든 문자열은'parse()'또는'parseString())''xml.dom.minidom' 함수 ... –
예를 들어 주셔서 감사합니다. 사실 텍스트 노드는 일반 텍스트로 렌더링됩니다.이 텍스트는 유효한 XML이 아닙니다. –