2016-12-02 19 views
0

は、私はこのようなxmlファイルを持っている、のは、言ってみましょう:私はしたい場合は、1つにまとめて<DOC_CONTENT>のタグ内のすべての内容をマージ1つのxmlファイルに属する同じノード内のコンテンツをマージする方法はありますか?

<recs> 
<REC> 
<SYS_TOPIC>topic1 topic1</SYS_TOPIC> 
<SYS_AUTHORS>author1</SYS_AUTHORS> 
<DOC_CONTENT>content1 content1 content1 content1 content1 content1 content1</DOC_CONTENT> 
<DOC_WRITEDATE>2016-12-01 09:30:10</DOC_WRITEDATE> 
</REC> 

<REC> 
<SYS_TOPIC>topic2 topic2</SYS_TOPIC> 
<SYS_AUTHORS>author2</SYS_AUTHORS> 
<DOC_CONTENT>content2 content2 content2 content2 content2 content2 content1</DOC_CONTENT> 
<DOC_WRITEDATE>2016-12-01 09:30:10</DOC_WRITEDATE> 
</REC> 
</recs> 

何?私はroot.findall('DOC_CONTENT').textを試みたが、それはあなたが必要な出力の例を与えることができ'list' object has no attribute 'text'

+0

を慰め? –

+0

@nick_gabpe '内容1内容1内容1内容1内容1内容1内容2内容2内容2内容2内容2内容2内容1は、同じタグの中にの内容をすべて入れても大丈夫です! – Jess

答えて

0
import xml.etree.ElementTree as et 

source_xml = """<recs> 
<REC> 
<SYS_TOPIC>topic1 topic1</SYS_TOPIC> 
<SYS_AUTHORS>author1</SYS_AUTHORS> 
<DOC_CONTENT>content1 content1 content1 content1 content1 content1 content1</DOC_CONTENT> 
<DOC_WRITEDATE>2016-12-01 09:30:10</DOC_WRITEDATE> 
</REC> 

<REC> 
<SYS_TOPIC>topic2 topic2</SYS_TOPIC> 
<SYS_AUTHORS>author2</SYS_AUTHORS> 
<DOC_CONTENT>content2 content2 content2 content2 content2 content2 content1</DOC_CONTENT> 
<DOC_WRITEDATE>2016-12-01 09:30:10</DOC_WRITEDATE> 
</REC> 
</recs>""" 
tree = et.fromstring(source_xml) 
doc_content = "DOC_CONTENT" 
content = [tr.text for tr in tree.iter() if (tr.tag ==doc_content)] 
root = et.Element(doc_content) 
root.text = "" 
for el in content: 
    root.text += el 
+0

ありがとうございました!私はそれを試してみました!しかし、なぜ名前エラーになるのですか? 'NameError:name' root 'が定義されていません' ありがとう! – Jess

+0

私は 'root = et.Element(doc_content)'行を追加するのを忘れてしまったので。 これで動作するはずです。 –

+0

これは完璧に動作します! – Jess

関連する問題