Вставьте элемент xml как вложенный элемент с помощью API ElementTree в Python - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужно изменить документ XML. Я использую Python и ElementTree API для него. Но я наткнулся на контрольно-пропускной пункт. Нынешняя структура имеет вид:

<A>
    <B>
        <C>
            <...>
            </...>
        </C>
    </B>
</A>

И я должен добавить подэлемент B2 к B, который является родительским для C, так что новая структура:

<A>
    <B>
        <B2>
            <C>
                <...>
                </...>
            </C>
        </B2>
    </B>
</A>

Прямо сейчас, когда я пытаюсь добавить подэлемент, он создает один, но не как родительский элемент C, новый становится отдельным элементом внутри B. Может ли кто-нибудь помочь мне и дать мне подсказки о том, как я могу создать Подэлемент как родитель другого элемента?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 апреля 2020

Вот неразумный способ использовать конкатенацию строк только для справки.

from simplified_scrapy import SimplifiedDoc,req,utils
html = '''
<A>
    <B>
        <C>
            <...>
            </...>
        </C>
    </B>
</A>
'''
doc = SimplifiedDoc(html)
c = doc.select('C')
html = doc.html[0:c._start]+"<B2>"+c.outerHtml+"</B2>"+doc.html[c._end:]
print(html)

Результат:

<A>
    <B>
        <B2><C>
            <...>
            </...>
        </C></B2>
    </B>
</A>

Вот еще несколько примеров. https://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples/element.py

...