2013-08-23 3 views
-4

문서가 항상 잘못 작성되어 더 많은 도움이됩니다.xml 개체를 파이썬 개체로 변환하는 방법?

<wordbook> 
    <item> 
    <name>engrossment</name> 
    <phonetic><![CDATA[ɪn'grəʊsmənt]]></phonetic> 
    <meaning><![CDATA[n. 正式缮写的文件,专注]]></meaning> 
    </item> 
    <item> 
    <name>graffiti</name> 
    <phonetic><![CDATA[ɡrəˈfi:ti:]]></phonetic> 
    <meaning><![CDATA[n.在墙上的乱涂乱写(复数形式)]]></meaning> 
    </item> 
    <item> 
    <name>pathology</name> 
    <phonetic><![CDATA[pæˈθɔlədʒi:]]></phonetic> 
    <meaning><![CDATA[n. 病理(学);〈比喻〉异常状态]]></meaning> 
    </item> 
<wordbook> 

이 내 파이썬 클래스입니다 :

이 내 XML 파일입니다

class Item(Base): 
    name = Column(String(50), primary_key=True) 
    phonetic = Column(String(50), default='') 
    meaning = Column(UnicodeText, nullable=False) 

당신이 마지막으로


좋아하는 XML 파서를 선택, 나는 xmltodict를 사용 구문, lxml 쓸 :

from lxml import etree 

wordbook = etree.Element('wordbook') 
for one in items: 
    item = etree.Element('item') 
    name = etree.Element('name') 
    name.text = one.name 
    phonetic = etree.Element('phonetic') 
    phonetic.text = etree.CDATA(one.phonetic) 
    meaning = etree.Element('meaning') 
    meaning.text = etree.CDATA(one.meaning) 
    if 1: 
     item.append(name) 
     item.append(phonetic) 
     item.append(meaning) 
    wordbook.append(item) 
s = etree.tostring(wordbook, pretty_print=True, encoding='utf8') 
print s 
+0

beautifulsoup 및 stackoverflow의 문서에서 예제를 찾으려고 시도하십시오. – metaphy

+1

"문서는 항상 잘못 작성되었습니다."- 예, 아니오. 내가 말할 필요가있는 것은 [RTFM] (http://wiki.python.org/moin/PythonXml)뿐입니다. – l4mpi

+0

sqlalchemy의 github 소스에는 많은 예제가 있으므로 grep을 사용하면 초보자에게 가장 적합합니다. – metaphy

답변

1

나는 xmltodict를 사용하여 갈 것 :

# -*- coding: utf-8 -*- 
import xmltodict 

data = """<wordbook> 
    <item> 
    <name>engrossment</name> 
    <phonetic><![CDATA[ɪn'grəʊsmənt]]></phonetic> 
    <meaning><![CDATA[n. 正式缮写的文件,专注]]></meaning> 
    </item> 
    <item> 
    <name>graffiti</name> 
    <phonetic><![CDATA[ɡrəˈfi:ti:]]></phonetic> 
    <meaning><![CDATA[n.在墙上的乱涂乱写(复数形式)]]></meaning> 
    </item> 
    <item> 
    <name>pathology</name> 
    <phonetic><![CDATA[pæˈθɔlədʒi:]]></phonetic> 
    <meaning><![CDATA[n. 病理(学);〈比喻〉异常状态]]></meaning> 
    </item> 
</wordbook>""" 

data = xmltodict.parse(data, encoding='utf-8') 

for item in data['wordbook']['item']: 
    print item['name'] 

인쇄 :

engrossment 
graffiti 
pathology 

당신은 또한 BeautifulSoup 또는 lxml을 사용할 수 있습니다 - 그것은 취향의 문제입니다. 아이디어는 거의 동일합니다. item 태그를 반복하고 Item을 인스턴스화합니다.

희망이 있습니다.

+0

고맙습니다. 1 년 전에 java에서 XML을 구문 분석하고 작성하는 방법을 알고 있습니다. – metaphy

+0

몇 분 안에 xml 구문 분석을 배우고 예제를 통해 도움이됩니다. 1 년 전, 나는 1 주일 이상을 보냈다. – metaphy

관련 문제