python domメソッドフォルダの下のすべてのxmlを巡回
2784 ワード
最近Pythonの勉強を始めたばかりで、このような関数を実現するには、Android appコードのres\valueディレクトリのxmlファイルを巡ります.xmlファイルのフォーマットは基本的に以下のようなので、比較的単一です.
string.xml
実際にresources親ノードの下にstringサブノードが3つあることがわかります.Pythonを習い始めたばかりなのでxmlを使うと思います.domの方法は分かりやすいです(私はまだ白です).
xml domは、xml要素のオブジェクトとプロパティ、およびアクセス方法を定義します.domはxmlドキュメントをツリー構造として処理します.具体的な紹介はこれを見て、クリックしてリンクを開くことができます.さて、本題に戻り、上の問題を解決するには、具体的な考え方は:
1.フォルダを巡り、すべてのxmlファイルを取得します.(glob.glob()を使用)
2.xmlごとに読み取り解析を行います.サブノードのプロパティ値とテキスト・ノード値が得られます.
実装コードは次のとおりです.
コードに注釈がはっきりしています.私のファイルには他のxmlファイルがあるので、親ノードはresourcesの下にありますが、子ノードは異なります.stringがあり、dimenなどがあります.しかし、そのフォーマットは同じです.私はprint valueでchildを使いましたnodeValueはnoneを手に入れたが、額はまだこの原因をよく知らない.おそらく次のようなものだと思います.
テキストは常にテキストノードに格納されます
DOM処理で一般的なエラーは、要素ノードにテキストが含まれていると考えられることです.
ただし、要素ノードのテキストはテキストノードに格納されます.
この例では、要素ノードは、「2005」の値を持つテキストノードです.
「2005」は要素の値ではありません!
具体的な原因は読者に教えてほしいですね!!☆⌒(*^-゜)v
以下に、いくつかの参考文書を示します.
Python golbメソッド:http://www.cnblogs.com/hongten/p/hongten_python_glob.html
xml解析:http://www.cnblogs.com/fnng/p/3581433.html
http://www.runoob.com/python/python-xml.html
string.xml
ActivityLife
Hello world!
Settings
実際にresources親ノードの下にstringサブノードが3つあることがわかります.Pythonを習い始めたばかりなのでxmlを使うと思います.domの方法は分かりやすいです(私はまだ白です).
xml domは、xml要素のオブジェクトとプロパティ、およびアクセス方法を定義します.domはxmlドキュメントをツリー構造として処理します.具体的な紹介はこれを見て、クリックしてリンクを開くことができます.さて、本題に戻り、上の問題を解決するには、具体的な考え方は:
1.フォルダを巡り、すべてのxmlファイルを取得します.(glob.glob()を使用)
2.xmlごとに読み取り解析を行います.サブノードのプロパティ値とテキスト・ノード値が得られます.
実装コードは次のとおりです.
# -*- coding: UTF-8 -*-
# xml
import sys
import glob
import os
import xml.dom.minidom
def traversalDir_XMLFile(path):
#
if (os.path.exists(path)):
# xml
f = glob.glob(path + '\\*.xml' )
for file in f :
print file
# xml
dom = xml.dom.minidom.parse(file)
#
root = dom.documentElement
# ,print childs
childs = root.childNodes
for child in childs:
# child
if(child.nodeType == 1):
#
print'key:', child.getAttribute('name')
print'value:',child.firstChild.data
traversalDir_XMLFile('E:\\work\\ActivityLife\\res\\values')
pathパスは私のvalueフォルダで、dimensが入っています.xml;string.xml;styles.xml;wordファイルとtxtフォーマットファイルもいくつかあります.出力結果:E:\work\ActivityLife\res\values\dimens.xml
key: activity_horizontal_margin
value: 16dp
key: activity_vertical_margin
value: 16dp
E:\work\ActivityLife\res\values\strings.xml
key: app_name
value: ActivityLife
key: hello_world
value: Hello world!
key: action_settings
value: Settings
E:\work\ActivityLife\res\values\styles.xml
key: AppBaseTheme
value:
key: AppTheme
value:
コードに注釈がはっきりしています.私のファイルには他のxmlファイルがあるので、親ノードはresourcesの下にありますが、子ノードは異なります.stringがあり、dimenなどがあります.しかし、そのフォーマットは同じです.私はprint valueでchildを使いましたnodeValueはnoneを手に入れたが、額はまだこの原因をよく知らない.おそらく次のようなものだと思います.
テキストは常にテキストノードに格納されます
DOM処理で一般的なエラーは、要素ノードにテキストが含まれていると考えられることです.
ただし、要素ノードのテキストはテキストノードに格納されます.
この例では、要素ノードは、「2005」の値を持つテキストノードです.
「2005」は要素の値ではありません!
具体的な原因は読者に教えてほしいですね!!☆⌒(*^-゜)v
以下に、いくつかの参考文書を示します.
Python golbメソッド:http://www.cnblogs.com/hongten/p/hongten_python_glob.html
xml解析:http://www.cnblogs.com/fnng/p/3581433.html
http://www.runoob.com/python/python-xml.html