0

解析したい XML は次のようになります。

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

ご覧のとおり<group>、別の の階層に があります<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 を使用していますか? 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 に答える
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 に答える