ホームページ > バックエンド開発 > Python チュートリアル > PythonのXML解析例を詳しく解説

PythonのXML解析例を詳しく解説

黄舟
リリース: 2016-12-14 18:00:33
オリジナル
1525 人が閲覧しました

Python xml解析

first.xml

<info> 
<person > 
<id>1</id> 
<name>fsy</name> 
<age >24</age> 
</person> 
<person> 
<id>2</id> 
<name>jianjian</name> 
<age>24</age> 
</person> 
<count id =&#39;1&#39;>1000</count> 
</info>
ログイン後にコピー

xml.etreeからElementTreeをetreeとしてインポート

読み込む

def read_xml(file): 
# parse()函数会返回一个能代表整篇文档的对象。这不是根元素。要获得根元素的引用可以调用getroot()方法。 
tree = etree.parse(file) 
root = tree.getroot() 
return root
ログイン後にコピー

情報を取得する

def print_node(node): 
&#39;&#39;&#39;&#39;&#39;打印结点基本信息&#39;&#39;&#39; 
print("node.tag:%s" % node.tag) 
print("node.attrib:%s"%node.attrib) 
print( "node.text:%s" % node.text)
ログイン後にコピー

検索:

find_all 
>>> root = read_xml (&#39;first.xml&#39;)   
>>> res = root.findall("person") 
[<Element &#39;person&#39; at 0x00000000033388B8>, <Element &#39;person&#39; at 0x0000000003413D68>] 
   
注意:findall只查询直接的子节点 
>>> r1 = root.findall("id") 
>>> r1 
[] 
>>> r =tree.findall(".//id") 
>>> for e in r: 
  print( e,e.text) 
      
<Element &#39;id&#39; at 0x00000000034279F8> 1 
<Element &#39;id&#39; at 0x0000000003427B38> 2
ログイン後にコピー

find:

そうだね

見つけてfind 失敗:

find を使用する場合、ブール値のコンテキストでは、ElementTree 要素オブジェクトに子要素が含まれていない場合、その値は False とみなされます (つまり、len(element) が 0 に等しい場合) ことに注意してください。これは、次の場合を意味します element.find('...') は、find() メソッドが一致を見つけたかどうかをテストしているのではなく、このステートメントは、一致した要素に子要素が含まれているかどうかをテストしています。 find() メソッドが要素を返すかどうかをテストしたい場合は、 if を使用する必要があります。 element.find('...') は None ではありません。

#find()方法用来返回第一个匹配到的元素。当我们认为只会有一个匹配,或者有多个匹配但我们只关心第一个的时候,这个方法是很有用的。 
>>> res[0].find("id") 
<Element &#39;id&#39; at 0x0000000003413CC8> 
>>> print_node(res[0].find("id")) 
node.tag:id 
node.attrib:{} 
node.text:1
ログイン後にコピー

以上は Python XML 解析例の詳細な説明です。読んでいただきありがとうございます。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート