如何使用Python获取XML文件中的child>child>child>child的内容

2024-05-13 00:03:35 发布

您现在位置:Python中文网/ 问答频道 /正文

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.056.001.01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <FIToFIPmtCxlReq>
            <Assgnmt>
                <Id>TEST-ISO-81</Id>
                <Assgnr>
                    <Agt>
                        <FinInstnId>
                            <BIC>CCCCGB2L</BIC>
                        </FinInstnId>
                    </Agt>
                </Assgnr>
                <Assgne>
                    <Agt>
                        <FinInstnId>
                            <BIC>MMMMGB2L</BIC>
                        </FinInstnId>
                    </Agt>
                </Assgne>
                <CreDtTm>2009-03-24T11:22:59</CreDtTm>
            </Assgnmt>
            <TxInf>
                <CxlId>103012345</CxlId>
                <Case>
                    <Id>ISO_TEST_CASE</Id>
                    <Cretr>
                            <Agt>
                                <FinInstnId>
                                    <BIC>MMMMGB2L</BIC>
                                </FinInstnId>
                            </Agt>
                    </Cretr>
                </Case>
            </TxInf>
     </Undrlyg>
    </FIToFIPmtCxlReq>
</Document>

在这里,我想得到“TxInf”的内容,就像它的所有子元素、子元素和数据一样

我尝试的是:

import xml.etree.ElementTree as ET
from xml.etree import ElementTree
tree = ET.parse('R3-CAMT.056.001.07-ISO-V.XML')
root = tree.getroot()
for element in root.iter():
    if element.tag == "{urn:iso:std:iso:20022:tech:xsd:camt.056.001.01}TxInf":
        tree._setroot(element.tag)
        print(root.tag)
        print(root.attrib)

请建议我是否可以使用_setroot或任何其他可能的方法更改根


Tags: idtreetagisorootxmlelementdocument
1条回答
网友
1楼 · 发布于 2024-05-13 00:03:35

在代码中尝试以下内容,看看是否有效:

for r in root.findall(".//*"):
    if 'TxInf' in r.tag:
        print(ET.tostring(r))

顺便说一下,如果您可以使用lxml,那么使用lxml可能会更容易

相关问题 更多 >