如何提取xml-fi的一部分

2024-04-29 10:13:51 发布

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

我有一个大的xml文件,看起来像下面的那个。基本上我想提取xml文件的一部分,例如这个"<ManagedElementId string = "rbs064841"/>"。在

 <Model version = "1" importVersion = "12.2">
        <Create>
            <SubNetwork networkType = "WRAN" userLabel="AHPTUR14">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs064841"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
             <SubNetwork networkType = "WRAN" userLabel = "AHPT78">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs04798"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
            <SubNetwork networkType = "WRAN" userLabel = "AHPT4">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs04456"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
        </Create>
    </Model>

这意味着在解析后提取:

^{pr2}$

因此,通过ManagedElementId在大的xml文件中进行搜索,当找到它时,提取它所在的部分,意思是从<SubNetwork>到{}。 我知道如何从xml文件中提取数据,但不知道如何提取xml.file文件. 我使用的是python ElementTree。 任何建议都会有帮助。在


Tags: 文件stringtypexmlsourcetypecellouserlabelsubnetwork
1条回答
网友
1楼 · 发布于 2024-04-29 10:13:51

findpath一起使用,然后获得相对父节点,如下所示:

s = '''<Model version = "1" importVersion = "12.2">
        <Create>
            <SubNetwork networkType = "WRAN" userLabel="AHPTUR14">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs064841"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
             <SubNetwork networkType = "WRAN" userLabel = "AHPT78">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs04798"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
            <SubNetwork networkType = "WRAN" userLabel = "AHPT4">
                <ManagedElement sourceType = "CELLO">
                    <ManagedElementId string = "rbs04456"/>
                    <primaryType type = "RBS"/>
                    <managedElementType types = ""/>
                    <associatedSite string = "Site=site06484"/>
                    <nodeVersion string = "W12B"/>
                    <platformVersion string = "Cello 12.2"/>
                    <swVersion string = ""/>
                    <vendorName string = "ERICSSON"/>
                    <userDefinedState string = ""/>
                    <managedServiceAvailability int = "1"/>
                    <isManaged boolean = "true"/>
                    <neMIMVersion string = "vS.1.150"/>
                    <connectionStatus string = "ON"/>
                </ManagedElement>
            </SubNetwork>
        </Create>
    </Model>'''

^{pr2}$
print ET.tostring(node)
<SubNetwork networkType="WRAN" userLabel="AHPTUR14">
                <ManagedElement sourceType="CELLO">
                    <ManagedElementId string="rbs064841"/>
                    <primaryType type="RBS"/>
                    <managedElementType types=""/>
                    <associatedSite string="Site=site06484"/>
                    <nodeVersion string="W12B"/>
                    <platformVersion string="Cello 12.2"/>
                    <swVersion string=""/>
                    <vendorName string="ERICSSON"/>
                    <userDefinedState string=""/>
                    <managedServiceAvailability int="1"/>
                    <isManaged boolean="true"/>
                    <neMIMVersion string="vS.1.150"/>
                    <connectionStatus string="ON"/>
                </ManagedElement>
            </SubNetwork>

如果从文件进行分析,请使用getroot()

root = ET.parse('file.xml')
tree = root.getroot()
...

希望这有帮助。在

相关问题 更多 >