<Placemark id="placemark_id">
<name>模型</name>
<Location>
<longitude>121.6097139799135</longitude>
</Location>
</Placemark>
from xml.dom import minidom
# 创建一个新的XML文档
doc1 = minidom.Document()
# 创建根元素并设置其属性
root1_elem = doc1.createElement("Placemark")
root1_elem.setAttribute("id", "mode_placemark_id")
doc1.appendChild(root1_elem)
# 创建<name>元素并添加到根元素, 值为模型
name_elem = doc1.createElement("name")
name_elem.appendChild(doc1.createTextNode("模型"))
root1_elem.appendChild(name_elem)
# 创建<Location>元及其子元素
location_elem = doc1.createElement("Location")
root1_elem.appendChild(location_elem)
# 设置经度
lon_elem = doc1.createElement("longitude")
lon_elem.appendChild(doc1.createTextNode("121.6097139799135"))
location_elem.appendChild(lon_elem)
print(doc1.toprettyxml(indent=" "))
直接获取数据
lon = lon_elem.firstChild.nodeValue
lon = doc.getElementsByTagName('longitude')[0].firstChild.nodeValue
通过父节点定义子节点 并获取值
location_node = root_elem.getElementsByTagName('Location')[0]
lon = location_node.getElementsByTagName('longitude')[0].firstChild.nodeValue
重新赋值
lon_elem.firstChild.nodeValue = '114.1284142342'
添加子节点
# 设置纬度
lat_elem = doc1.createElement("latitude")
lat_elem.appendChild(doc1.createTextNode("24.67367524368988"))
location_elem.appendChild(lat_elem)
doc2 = minidom.Document()
# 创建根节点
root2_elem = doc2.createElement("Root")
doc2.appendChild(root2_elem)
alt_elem = doc2.createElement("altitude")
alt_elem.appendChild(doc2.createTextNode('118'))
root2_elem.appendChild(alt_elem) # 添加到根节点
range_elem = doc2.createElement("range")
range_elem.appendChild(doc2.createTextNode('0'))
root2_elem.appendChild(range_elem) # 添加到根节点
将一个xml文档某个元素插入另一个文档,插入另一文档中
将alt_elem 插入到doc1
imported_alt_elem = doc1.importNode(alt_elem, deep=True)
location_elem.appendChild(imported_alt_elem)
将root2_elem及其下的子元素 插入到doc1
imported_root_elem_other = doc1.importNode(root2_elem, deep=True)
location_elem.appendChild(imported_root_elem_other)
将另个文档中的节点,插入指定节点
将imported_alt_elem 节点插入 lon_elem 的前面
imported_alt_elem = doc1.importNode(alt_elem, deep=True)
location_elem.insertBefore(imported_alt_elem, lon_elem)
将imported_alt_elem 放到 lat_elem 的后面
imported_alt_elem = doc1.importNode(alt_elem, deep=True)
location_elem.insertBefore(imported_alt_elem, lat_elem.nextSibling)
将imported_alt_elem 放到 lon_elem 的后面
imported_alt_elem = doc1.importNode(alt_elem, deep=True)
location_elem.insertBefore(imported_alt_elem, lon_elem.nextSibling)
将一个文档下的子节点放入另外一个节点
# 遍历root2_elem的所有子元素
for child in root2_elem.childNodes:
# 导入子元素到doc1
imported_child = doc1.importNode(child, deep=True)
# 将导入的子元素添加到location_elem中
location_elem.appendChild(imported_child)
将某个文档直接插入另一个文档的某个节点下
直接通过已经存在的引用导入节点
imported_root2_elem = doc1.importNode(root2_elem, deep=True)
location_elem.appendChild(imported_root2_elem)
通过查询XML文档的根元素来导入节点
imported_doc2_elem = doc1.importNode(doc2.documentElement, deep=True)
location_elem.appendChild(imported_doc2_elem)