保存XML文档,打破了我的XSI声明

时间:2012-08-15 09:26:09

标签: python xml beautifulsoup

我有一个问题:

我正在使用python xml解析器(beautifulsoup)解析具有命名空间的XML,当我保存该xml时,解析器将使用{http:// www替换命名空间中的“xsi:”。 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">

任何人都可以帮我解决这个问题吗?

此致 博

2 个答案:

答案 0 :(得分:1)

filed a bug for you.我还提交了一个修复程序,它将在下一个版本的Beautiful Soup中发布。

答案 1 :(得分:0)

这就是我暂时解决的问题。

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)