0

我要解析的 XML 如下所示:

<root>
    <group>
        <somethingelse>
            <group></group>
        </somethingelse>
    </group>
</root>

如您所见,<group>在 another 的层次结构中有 a <group>。将其解析为BeautifulStoneSoup将内部置于<group>外部(参见下面的示例)。

如何防止这种情况并将内部保持在<group>定义的位置?


代码

from BeautifulSoup import BeautifulStoneSoup

xml = """
    <root>
        <group>
            <somethingelse>
                <group></group>
            </somethingelse>
        </group>
    </root>
"""

def main():
    doc = BeautifulStoneSoup(xml)
    print doc.prettify()

if __name__ == '__main__':
    main()

结果

<root>
 <group>
  <somethingelse>
  </somethingelse>
 </group>
 <group>
 </group>
</root>
4

2 回答 2

2

升级到 BeautifulSoup 4,并安装lxml解析器。此组合正确处理 XML:

>>> from bs4 import BeautifulSoup
>>> doc = BeautifulSoup(xml, 'xml')
>>> print doc.prettify()
<?xml version="1.0" encoding="utf-8"?>
<root>
 <group>
  <somethingelse>
   <group/>
  </somethingelse>
 </group>
</root>

安装两个项目:

pip install beautifulsoup4 lxml
于 2013-10-18T21:05:38.400 回答
2

您使用的是最新版本的 BeautifulSoup 吗?使用 BeautifulSoup4,我设法得到了这个:

from bs4 import BeautifulSoup

doc = BeautifulSoup(xml, features="xml")
print doc.prettify()

结果是:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <group>
  <somethingelse>
   <group/>
  </somethingelse>
 </group>
</root>
于 2013-10-18T21:07:23.563 回答