PythonでXMLを触ってみる5 minidomね
前回は追加をしたので今回は削除してみます。
Sample.xml
<?xml version="1.0" encoding="UTF-8"?> <cars> <car> <name>乗用車</name> <price>150</price> </car> <car> <name>トラック</name> <price>500</price> </car> <car> <name>オープンカー</name> <price>200</price> </car> </cars>
minidom5.py
# _*_ coding: utf-8 _*_ import xml.dom, xml.dom.minidom, codecs def walk(node): n = node.firstChild while n: if (n.nodeType == xml.dom.Node.ELEMENT_NODE and n.nodeName == 'price'): parent = n.parentNode parent.removeChild(n) walk(n) n = n.nextSibling doc = xml.dom.minidom.parse('Sample.xml') root = doc.documentElement walk(root) result = codecs.open('result2.xml', 'w', 'utf-8') doc.writexml(result) result.close()
実行結果
$ python minidom5.py $ cat result2.xml <?xml version="1.0" ?><cars> <car> <name>乗用車</name> </car> <car> <name>トラック</name> </car> <car> <name>オープンカー</name> </car> </cars>
こんどは前回作ったXMLファイルからcolor属性を削除します。
result.xml
<?xml version="1.0" ?><cars> <car color="白"> <name>乗用車</name> <price>150</price> <company>カーバンク社</company> </car> <car color="白"> <name>トラック</name> <price>500</price> <company>カーバンク社</company> </car> <car color="白"> <name>オープンカー</name> <price>200</price> <company>カーバンク社</company> </car> </cars>
minidom5a.py
# _*_ coding: utf-8 _*_ import xml.dom, xml.dom.minidom, codecs def walk(node): n = node.firstChild while n: if (n.nodeType == xml.dom.Node.ELEMENT_NODE and n.nodeName == 'car'): attrmap = n.removeAttribute('color') walk(n) n = n.nextSibling doc = xml.dom.minidom.parse('result.xml') root = doc.documentElement walk(root) result = codecs.open('result3.xml', 'w', 'utf-8') doc.writexml(result) result.close()
実行結果
$ python minidom5a.py $ cat result3.xml <?xml version="1.0" ?><cars> <car> <name>乗用車</name> <price>150</price> <company>カーバンク社</company> </car> <car> <name>トラック</name> <price>500</price> <company>カーバンク社</company> </car> <car> <name>オープンカー</name> <price>200</price> <company>カーバンク社</company> </car> </cars>
COMPLETE!