一、xml操作
- 使用xml进行创建
<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)
三、将一个xml文档,插入另一文档中(将一个节点值插入另一个节点)
-
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)
-
将一个文档下的子节点放入另外一个节点文章来源:https://www.toymoban.com/news/detail-725241.html
# 遍历root2_elem的所有子元素 for child in root2_elem.childNodes: # 导入子元素到doc1 imported_child = doc1.importNode(child, deep=True) # 将导入的子元素添加到location_elem中 location_elem.appendChild(imported_child)
-
将某个文档直接插入另一个文档的某个节点下文章来源地址https://www.toymoban.com/news/detail-725241.html
直接通过已经存在的引用导入节点 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)
到了这里,关于python 之xml 使用原生xml.dom的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!