Python3:如何使用 lxml 从父元素获取子元素或子元素?

时间:2021-02-04 09:20:28

标签: python-3.x lxml elementtree

我有以下带有子/子元素的xml结构

<Sales>
    <SalesContacts>
        <Enty>
            <ns0:Active>true</ns0:Active>
            <ns0:Contact>
                <ns1:Person>
                    <ns1:FirstName>myname</ns1:FirstName>
                    <ns1:LastName>seond name</ns1:LastName>
                </ns1:Person>
                <ns1:EmailAddress1>abcr@gmail.com</ns1:EmailAddress1>
                <ns1:EmailAddress2>abc2@sgmail.com</ns1:EmailAddress2>
                <ns1:FaxPhone>0002222</ns1:FaxPhone>
                <ns1:HomePhone>000222</ns1:HomePhone>
                <ns1:Person>
                    <ns1:DisplayName>My Name</ns1:DisplayName>
                </ns1:Person>
                <ns1:Address>
                    <ns2:AddressLine1>my_address</ns2:AddressLine1>
                    <ns2:AddressType>
                        <ns2:Code>home</ns2:Code>
                        <ns2:Description>Home</ns2:Description>
                        <ns2:Name>Home</ns2:Name>
                    </ns2:AddressType>
                    <ns2:City>SAINT CHARLES</ns2:City>
                    <ns2:Country>
                        <ns2:Code>Uk</ns2:Code>
                        <ns2:Description>uk</ns2:Description>
                        <ns2:Name>United States</ns2:Name>
                    </ns2:Country>
                    <ns2:County>Charles</ns2:County>
                    <ns2:PostalCode>000222</ns2:PostalCode>
                    <ns2:PublicID>dc:1000</ns2:PublicID>
                    <ns2:Retired>false</ns2:Retired>
                    <ns2:State>MD</ns2:State>
                    <ns2:UpdateTime>mytime</ns2:UpdateTime>
                </ns1:Address>
                <ns1:PrimaryPhone>
                    <ns1:Code>home</ns1:Code>
                    <ns1:Description>Home</ns1:Description>
                    <ns1:Name>Home</ns1:Name>
                </ns1:PrimaryPhone>
                <ns1:PublicID>dc1111</ns1:PublicID>
                <ns1:Retired>false</ns1:Retired>
                <ns1:UpdateTime>mytime</ns1:UpdateTime>
            </ns0:Contact>
            <ns0:PublicID>pc:630121</ns0:PublicID>
            <ns0:Roles>
                <ns0:Enty>
                    <ns3:PublicID>dc:1231231</ns3:PublicID>
                    <ns3:Subtype>
                        <ns3:Code>SalesHolder</ns3:Code>
                        <ns3:Description>SalesHolder</ns3:Description>
                        <ns3:Name>SalesHolder</ns3:Name>
                    </ns3:Subtype>
                    <ns3:UpdateTime>Mytime</ns3:UpdateTime>
                </ns0:Enty>
                <ns0:Enty>
                    <ns3:PublicID>dc:12312321</ns3:PublicID>
                    <ns3:Subtype>
                        <ns3:Code>mybusiness</ns3:Code>
                        <ns3:Description>mybusiness</ns3:Description>
                        <ns3:Name>mybusiness</ns3:Name>
                    </ns3:Subtype>
                    <ns3:UpdateTime>mytime</ns3:UpdateTime>
                </ns0:Enty>
            </ns0:Roles>
            <ns0:UpdateTime>mytime</ns0:UpdateTime>
        </Enty>
    </SalesContacts>
</Sales>

现在我需要从父元素“Enty”中获取子元素“Roles/Enty” 我尝试了以下方式

test_root = etree.fromstring(payload_xml_obj_wf).getroottree()

result=test_root.find('Enty').attrib.get('Roles')
print(result)

但是我得到的结果是

'NoneType' object has no attribute 'attrib'

#预期: 我需要在“角色”- 中获取“实体”的数量。在这种情况下, 将是两个

     <ns0:Roles>
         <ns0:Enty><-><ns0:Enty>
         <ns0:Enty><-><ns0:Enty>
     <ns0:Roles>

感谢是否有任何解决方案可以解决此问题?

谢谢

0 个答案:

没有答案
相关问题