Сохранение XML-документа нарушает мою декларацию XSI

У меня есть вопрос:

Я анализирую XML с пространством имен с помощью парсера Python xml ( beautifulsoup), и когда Я сохраняю этот xml, который синтаксический анализатор заменяет: «xsi:» в пространстве имен на {http://www.w3.org/2001/XMLSchema-instance}, как я могу помешать ему это сделать?

Пример:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

Становится:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" {http://www.w3.org/2001/XMLSchema-instance}schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

Может ли кто-нибудь помочь мне с этим?

С уважением, Боян


person Bojan Jovanovic    schedule 15.08.2012    source источник
comment
Похоже на ошибку в БС.   -  person Ignacio Vazquez-Abrams    schedule 15.08.2012
comment
Я знаю, я просто пытался выяснить, знает ли кто-нибудь, как обойти эту ошибку, потому что я не мог найти быстрый способ ее исправить.   -  person Bojan Jovanovic    schedule 15.08.2012


Ответы (2)


Я сообщил вам об ошибке. я также внес исправление, которое быть в следующем выпуске Beautiful Soup.

person Leonard Richardson    schedule 16.08.2012

Вот как я временно решил это.

soupOut = str(soup)
ns = re.search("<project [^>]* xmlns:xsi=\"(?P<ns>[^\"]*)\"[^>]*>",soupOut)
if ns:
    soupOut = soupOut.replace("{%s}"%ns.group('ns'), 'xsi:')
file.write(soupOut)
person Bojan Jovanovic    schedule 15.08.2012