これまで同様の質問がありましたが、これは少し異なります。私はPythonを使ってXMLタグを見つけて置き換えたいと思っています。私はいくつかのGISシェープファイルのメタデータとしてXMLをアップロードしています。メタデータエディタでは、特定のデータが収集される日付を選択するオプションがあります。オプションは「単一の日付」、「複数の日付」および「日付の範囲」です。日付の範囲のタグを含む最初のXMLでは、いくつかのサブ要素 'begdate'、 'begtime'、 'enddate'およびタグを含むタグ "rngdates"が表示されます。これらのタグを編集して、複数の単一の日付を含む2番目のXMLのように見せたいと思います。新しいタグは 'mdattim'、 'sngdate'、 'caldate'です。私はこれが十分にはっきりしていることを願っていますが、必要に応じてさらに情報を求めてください。 XMLは変わった獣なので、まだ完全に理解していません。Pythonを使用してXMLのタグを検索して置換する
おかげで、 マイク
まずXML:
<idinfo>
<citation>
<citeinfo>
<origin>My Company Name</origin>
<pubdate>05/04/2009</pubdate>
<title>Feature Class Name</title>
<edition>0</edition>
<geoform>vector digital data</geoform>
<onlink>.</onlink>
</citeinfo>
</citation>
<descript>
<abstract>This dataset represents the GPS location of inspection points collected in the field for the Site Name</abstract>
<purpose>This dataset was created to accompany the clients Assessment Plan. This point feature class represents the location within the area that the field crews collected related data.</purpose>
</descript>
<timeperd>
<timeinfo>
<rngdates>
<begdate>7/13/2010</begdate>
<begtime>unknown</begtime>
<enddate>7/15/2010</enddate>
<endtime>unknown</endtime>
</rngdates>
</timeinfo>
<current>ground condition</current>
</timeperd>
セカンドXML:
<idinfo>
<citation>
<citeinfo>
<origin>My Company Name</origin>
<pubdate>03/07/2011</pubdate>
<title>Feature Class Name</title>
<edition>0</edition>
<geoform>vector digital data</geoform>
<onlink>.</onlink>
</citeinfo>
</citation>
<descript>
<abstract>This dataset represents the GPS location of inspection points collected in the field for the Site Name</abstract>
<purpose>This dataset was created to accompany the clients Assessment Plan. This point feature class represents the location within the area that the field crews collected related data.</purpose>
</descript>
<timeperd>
<timeinfo>
<mdattim>
<sngdate>
<caldate>08-24-2009</caldate>
<time>unknown</time>
</sngdate>
<sngdate>
<caldate>08-26-2009</caldate>
</sngdate>
<sngdate>
<caldate>08-26-2009</caldate>
</sngdate>
<sngdate>
<caldate>07-07-2010</caldate>
</sngdate>
</mdattim>
</timeinfo>
は、これはこれまでのところ、私のPythonコードです:
folderPath = "Z:\ESRI\Figure_Sourcing\Figures\Metadata\IOR_Run_Metadata_2009"
for filename in glob.glob(os.path.join(folderPath, "*.xml")):
fullpath = os.path.join(folderPath, filename)
if os.path.isfile(fullpath):
basename, filename2 = os.path.split(fullpath)
root = ElementTree(file=r"Z:\ESRI\Figure_Sourcing\Figures\Metadata\Run_Metadata_2009\\" + filename2)
iter = root.getiterator()
#Iterate
for element in iter:
print element.tag
if element.tag == "begdate":
element.tag.replace("begdate", "sngdate")
なぜXSLTを使用しないのですか? – GaretJax
また、一方を他方に変換するための規則を示してください。私。入力と、その入力から生成される予想出力を表示します。 –
最初のXMLが入力です。私はいくつかのタグの間にキーワードを埋め込んだテンプレートXMLをいくつか持っています。 2番目は手動で編集した出力です。最初のXMLを編集して、最初のXMLのtimeinfoタグ間のすべてが2番目のXMLの同じタグ間のすべてに置き換えられるようにします。私はPythonを使用しています。これはArcGIS関数であり、Pythonが優先言語なのでです。私はこのスクリプトをPythonツールと併用しています。私のスクリプトは、多数のGISシェープファイルでメタデータとして使用されるXMLをバッチ処理するために使用されます。 – Mike