私はこれらのようなタグを含むXMLファイルを持っています。特定のXMLタグを抽出するPythonの値
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DataFlows>
<DataFlow id="ABC">
<Flow name="flow4" type="Ingest">
<Ingest dataSourceName="type1" tableName="table1">
<DataSet>
<DataSetRef>value1-${d1}-${t1}</DataSetRef>
<DataStore>ingest</DataStore>
</DataSet>
<Mode>Overwrite</Mode>
</Ingest>
</Flow>
</DataFlow>
<DataFlow id="MHH" dependsOn="ABC">
<Flow name="flow5" type="Reconcile">
<Reconciliation>
<Source>QW</Source>
<Target>EF</Target>
<ComparisonKey>
<Column>dealNumber</Column>
</ComparisonKey>
<ReconcileColumns mode="required">
<Column>bookId</Column>
</ReconcileColumns>
</Reconciliation>
</Flow>
<Flow name="output" type="Export" format="Native">
<Table publishToSQLServer="true">
<DataSet>
<DataSetRef>value4_${cob}_${ts}</DataSetRef>
<DataStore>recon</DataStore>
<Date>${run_date}</Date>
</DataSet>
<Mode>Overwrite</Mode>
</Table>
</Flow>
</DataFlow>
</DataFlows>
このXMLをPythonで処理するには、Pythonの最小限のDOM実装を使用してください。 。
私のフロータイプは、私は、 『出力という名前の次のフロータグに行く必要がある『和解する』されている場合:私はときにのみ、「和解する』のフロータイプのDataSetタグに情報を抽出する必要が
例えば 」とDataSetRef、データソースと日付タグの抽出値。
これまでのところ、私は以下しようとしているコードを述べたが、私はすべてのフィールドを空白の値をも取得しています。
#!/usr/bin/python
from xml.dom.minidom import parse
import xml.dom.minidom
# Open XML document using minidom parser
DOMTree = xml.dom.minidom.parse("Store.xml")
collection = DOMTree.documentElement
#if collection.hasAttribute("DataFlows"):
# print "Root element : %s" % collection.getAttribute("DataFlows")
pretty = DOMTree.toprettyxml()
print "Collectio: %s" % collection
dataflows = DOMTree.getElementsByTagName("DataFlow")
# Print detail of each movie.
for dataflow in dataflows:
print "*****dataflow*****"
if dataflow.hasAttribute("dependsOn"):
print "Depends On is present"
flows = DOMTree.getElementsByTagName("Flow")
print "flows"
for flow in flows:
print "******flow******"
if flow.hasAttribute("type") and flow.getAttribute("type") == "Reconcile":
flowByReconcileType = flow.getAttribute("type")
TagValue = flow.getElementsByTagName("DataSet")
print "Tag Value is %s" % TagValue
print "flow type is: %s" % flowByReconcileType
そこから以降、私はこれらを渡す必要があります3つの値を抽出上記のUnixシェルスクリプトを使用していくつかのディレクトリを処理します。 ご協力いただければ幸いです。
ここまでお試しください。 – Mathias
こんにちはマティアス、私は問題のコードを更新しました。それを調べてくれてありがとう。 –
@rahulgulatiあなたの試みたコードを含めるためにあなたの質問を編集してください – har07