Может ли разделы CDATA быть сохранены BeautifulSoup?

Я использую BeautifulSoup для чтения, изменения и записи файла XML. У меня проблемы с удалением разделов CDATA. Вот упрощенный пример.

XML-файл виновника:

<?xml version="1.0" ?>
<foo>
    <bar><![CDATA[
        !@#$%^&*()_+{}|:"<>?,./;'[]\-=
    ]]></bar>
</foo>

А вот и скрипт Python.

from bs4 import BeautifulSoup

xmlfile = open("cdata.xml", "r") 
soup = BeautifulSoup( xmlfile, "xml" )
print(soup)

Вот вывод. Обратите внимание, что теги раздела CDATA отсутствуют.

<?xml version="1.0" encoding="utf-8"?>
<foo>
<bar>
        !@#$%^&amp;*()_+{}|:"&lt;&gt;?,./;'[]\-=
    </bar>
</foo>

Я тоже пробовал печататьsoup.prettify(formatter="xml") и получил тот же результат с немного другим пробелом. В документах не так много о чтении в разделах CDATA, так что, возможно, этоlxml вещь?

Есть ли способ сообщить BeautifulSoup о сохранении разделов CDATA?

Обновить Да, это вещь lxml.http://lxml.de/api.html#cdata Итак, возникает вопрос: можно ли сказать BeautifulSoup инициализировать lxml сstrip_cdata=False?

Ответы на вопрос(1)

Ваш ответ на вопрос