我正在尝试从 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 文件非常复杂,大约 2,000,000 行,即使 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。因此,首先隔离然后提取坐标是必要的。
有任何想法吗?