python+selenium自動化ソフトウェアテスト(12章):Python読み書きXMLドキュメント

10186 ワード

XMLはタグ言語を拡張することができ、データをタグ付けし、データ型を定義することができ、ユーザーが自分のタグ言語を定義できるソース言語である.xmlには以下の特徴がある:まず、ラベルのペアからなる:ラベルには属性がある:ラベルのペアはデータを埋め込むことができる:abcPythonはXMLドキュメントの読み書きによくいくつかのモジュールがある:(1)xml.etree.ElementTree ElementTreeは軽量級のDOMのようで、便利で友好的なAPIを持っています.コードの可用性がよく、速度が速く、消費メモリが少ない.(2)xml.dom.*XMLデータをメモリに1つのツリーに解析し、ツリーの操作によってXMLを操作します.(3)xml.sax.* 
python標準ライブラリにはSAX解析器が含まれており、SAXはイベント駆動モデルで、XMLを解析する過程で個々のイベントをトリガーし、ユーザー定義のコールバック関数を呼び出すことでXMLファイルを処理します.
XMLドキュメントへの書き込み
#coding:utf-8

from xml.dom import minidom

#  xml     
def create_xml_test(filename):
    #  xml    
    xml=minidom.Document()

    #
    root=xml.cneateElement('root')

    #    (xmlns:xsi     ,       xsi: schemaLocation    xsd   )
    root.setAttribute('xmlns:xsi','http://www.xxx.com')

    #
    xml.appendchild(root)

    #
    text_node=xml.createElement('element')
    text_node.setAttribute('id','id1')
    root.appendChild(text_node)

    #
    text=xml.cneateTextNode('hello world')
    text_node.appendchild(text)

    #
    tag=xml.createElement('tag')
    tag.setAttribute('data', 'tag data')
    text_node.appendchild(tag)

    #
    f=open(filename,'w')
    f.write(xml.toprettyxml(encodings'utf-8'))
    f.close()

if __name__ == '__main__':
    #      ,  1. xml
    create_xml_test('1.xml')

xmlのドキュメントがローカルで生成されます
XMLドキュメントの読み込み
#coding:utf-8

from xml.dom import minidom

#  xml     
def read_xml_test(filename):
   #      , parse    
   xml = minidom.parse(filename)

   #     
   root = xml.documentElement

   #          element  
   #         w3school      dir(root)  
   elements = root.getElementsByTagName('element')

   #    ,elements     
   for element in elements:
      #     id  
      if element.hasAttribute('id'):
         #          ,      ,    
         print 'id:, element.getAttribute('id')

   #  element    
   for node in element.childNodes:
      #  nodeMame       
      if node.nodeName =  = '#text':
         # data        
         text = node.data.replace('
,
'') #
print u'\t :', text else: # print '\t' + node.nodeName # , getAttribute # for attr,attr_val in node.attributes.items(): print '\t\t', attr,':'jattr_val print '' if __name__ == '__main__': read_xml_test('test.xml') raw_input('ok')