Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Bojan JovanovicОтветов: 2

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

Я анализирую 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">

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

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

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

pythonxmlbeautifulsoup

Ответы

Ответ 1 · рейтинг 1 · Leonard Richardson

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

Ответ 2 · Bojan Jovanovic

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

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)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы