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ドキュメントへの書き込み
xmlのドキュメントがローカルで生成されます
XMLドキュメントの読み込み
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')