У меня есть 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 с использованием минимальной реализации DOM Python. Мне нужно извлечь информацию в DataSet Tag только тогда, когда тип потока в «сверку„
Для примера:.
Если мой тип Поток „сверку“, то мне нужно, чтобы перейти к следующему теге потока под названием“Выход "и извлекать значения DataSetRef, DataSource и Даты тегов.
до сих пор я пытался нижеуказанным код, но я получаю пустые значения во всех мАЕ полей.
#!/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 Shell для обработки некоторых каталогов. Любая помощь будет оценена по достоинству.
Пожалуйста, показывает нам, что вы пробовали до сих пор. – Mathias
Привет, Матиас, я обновил свой код. Спасибо, что посмотрели. –
@rahulgulati Пожалуйста, отредактируйте ваш вопрос, включив в него свой код – har07