从与特定tex匹配的xml中提取整个元素

2024-05-15 23:46:30 发布

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

我是XML和Python的学生和新手。目前,我有一个非常大的XML文件,我需要将它拆分成一个小的XML文件,这意味着要将一些特定的元素提取到一个新的XML文件中。我需要提取的元素包含选定的文本。下面是一个XML示例:

...
<ns:FeatureCollection>
    <ns:FeatureMember>
        <ns:node ns:id="n1">
            <ns:name>Node1</ns:name>
            <ns:position>1000.00 1000.00 0.0</ns:position>
            <ns:haspoint Objectclass="point" xlink:href="p1"/>
            <ns:haspoint Objectclass="point" xlink:href="p2"/>
        </ns:node>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:node ns:id="n2">
            <ns:name>Node2</ns:name>
            <ns:position>2000.00 2000.00 0.0</ns:position>
            <ns:haspoint Objectclass="point" xlink:href="p3"/>
        </ns:node>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:node ns:id="n3">
            <ns:name>Node3</ns:name>
            <ns:position>3000.00 3000.00 0.0</ns:position>
            <ns:haspoint Objectclass="point" xlink:href="p4"/>
        </ns:node>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p1">
            <ns:name>Point1</ns:name>
            <ns:innode Objectclass="node" xlink:href="n1"/>
        </ns:point>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p2">
            <ns:name>Point2</ns:name>
            <ns:innode Objectclass="node" xlink:href="n1"/>
        </ns:point>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p3">
            <ns:name>Point3</ns:name>
            <ns:innode Objectclass="node" xlink:href="n2"/>
        </ns:point>        
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p4">
            <ns:name>Point4</ns:name>
            <ns:innode Objectclass="node" xlink:href="n3"/>
        </ns:point>
    </ns:FeatureMember>
</ns:FeatureCollection>

现在我有了具体的节点位置:1000.00 1000.00 0.0和2000.00 2000.00 0.0,我想提取节点的所有元素及其相关元素的点,并创建一个新的XML文件。新文件应如下所示:

...
<ns:FeatureCollection>
    <ns:FeatureMember>
        <ns:node ns:id="n1">
            <ns:name>Node1</ns:name>
            <ns:position>1000.00 1000.00 0.0</ns:position>
            <ns:haspoint Objectclass="point" xlink:href="p1"/>
            <ns:haspoint Objectclass="point" xlink:href="p2"/>
        </ns:node>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:node ns:id="n2">
            <ns:name>Node2</ns:name>
            <ns:position>2000.00 2000.00 0.0</ns:position>
            <ns:haspoint Objectclass="point" xlink:href="p3"/>
        </ns:node>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p1">
            <ns:name>Point1</ns:name>
            <ns:innode Objectclass="node" xlink:href="n1"/>
        </ns:point>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p2">
            <ns:name>Point2</ns:name>
            <ns:innode Objectclass="node" xlink:href="n1"/>
        </ns:point>
    </ns:FeatureMember>
    <ns:FeatureMember>
        <ns:point ns:id="p3">
            <ns:name>Point3</ns:name>
            <ns:innode Objectclass="node" xlink:href="n2"/>
        </ns:point>        
    </ns:FeatureMember>
</ns:FeatureCollection>

如何使用XPath和Python?非常感谢你!你知道吗


Tags: 文件nameidnodepositionxmlpointxlink