2016-12-02 3 views
0

Скажем, у меня есть XML-файл, как это:Как объединить содержимое в том же узле, который принадлежит одному файлу 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> 

Что делать, если я хочу объединить все содержимое в теге <DOC_CONTENT> вместе в одном? Я попытался root.findall('DOC_CONTENT').text Но утешает 'list' object has no attribute 'text'

+0

Можете ли вы привести пример требуемой мощности? –

+0

@nick_gabpe Я хочу, чтобы это было так: ' content1 content1 content1 content1 content1 content1 content1content2 content2 content2 content2 content2 content2 content1' просто поместить все содержимое в в том же теге, это прекрасно! – 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

Смежные вопросы