我正在尝试从xml文件中提取一些坐标。问题是我的xml文件具有多个相同的标记,因此我无法正确隔离它们。
说xml是这样的:
<GeoFeature gml:id="0">
<Vertices>
<Vertex IndexNo="0" srsDimension="3">649277.148852 5142325.926182 -955.329113</Vertex>
<Vertex IndexNo="1" srsDimension="3">649262.401411 5142320.847273 -955.159828</Vertex>
<Vertex IndexNo="2" srsDimension="3">649271.562070 5142318.588838 -955.413264</Vertex>
<Vertex IndexNo="3" srsDimension="3">649273.811729 5142318.034215 -955.486051</Vertex>
</Vertices>
</GeoFeature gml:id="0">
<GeoFeature gml:id="1">
<Vertices>
<Vertex IndexNo="0" srsDimension="3">649277.148852 5142325.926182 -955.329113</Vertex>
<Vertex IndexNo="1" srsDimension="3">649262.401411 5142320.847273 -955.159828</Vertex>
<Vertex IndexNo="2" srsDimension="3">649271.562070 5142318.588838 -955.413264</Vertex>
<Vertex IndexNo="3" srsDimension="3">649273.811729 5142318.034215 -955.486051</Vertex>
</Vertices>
</GeoFeature gml:id="1">
那么我要做的就是非常简单
from bs4 import BeautifulSoup
soup = BeautifulSoup (open xml)
results = []
def get_data_vaule():
GeoFeatures=soup.find_all('GeoFeature')
for GeoFeature in GeoFeatures:
if GeoFeature['gml:id'] = 0:
vertexs=soup.find_all('Vertex')
for vertex in vertexs:
value=vertex.contents
for i in value:
str(i)
results.append(i)
最后,str摆脱了所有()和[]仅保留坐标。
但是实际的xml文件非常复杂,大约200万行,即使VS也无法折叠每个部分,所以我从没真正获得过有关它的结构的清晰图片。
例如,到<Vertex>
的实际路径是:
tree.xpath(“ ./ GeoModel / FeatureClasses / FeatureClass / GeoFeatureClass / Features / Feature / GeoFeature / Geometry / Shape / GeoTin / Vertices / Vertex”)
问题在于gml:id="0"
和gml:id="1"
等存在多个部分。
到目前为止,我找不到任何可以隔离每个部分的标签。
我必须隔离它们,因为在<Vertex>
下是<Triangle>
,如下所示:
<Triangle IndexNo="9613">
<VertexList>5253 5426 5425</VertexList>
<NeighborList>9618 9934 9614</NeighborList>
</Triangle>
<VertexList>
从1开始,每部分重置为1。
因此,必须先隔离然后提取坐标。
有什么想法吗?