我有以下代码。
import xml.dom.minidom
def get_a_document(name):
return xml.dom.minidom.parse(name)
doc = get_a_document("sources.xml")
sources = doc.childNodes[1]
for e in sources.childNodes:
if e.nodeType == e.ELEMENT_NODE and e.localName == "source":
for source in e.childNodes:
print source.localName
print source.nodeType
if source.nodeType == source.ELEMENT_NAME and source.localName == "language":
print source.localName
country = doc.createElement("country")
e.appendChild(country)
我正在尝试阅读sources.xml并添加一个元素国家/地区。但是,我收到以下错误。
AttributeError: Text instance has no attribute 'ELEMENT_NAME'
Sources.xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<!--sources.xml for multilingual, follows an ID range for different type of sources. Dailies sources are merged to this list-->
<sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<source>
<id>1005001</id>
<language>Afar</language>
<status>active</status>
<tags>
<tag>language</tag>
</tags>
<title>Afar</title>
</source>
</sources>
有人还可以为minidom库提供一个很好的教程。另外,如果你可以建议一个更好的python xml库,它会很棒。
由于 巴拉
答案 0 :(得分:1)
您可能正在遇到包含标记之间空白的节点。目前尚不清楚您要尝试做什么,但如果您只删除source.nodeType == source.ELEMENT_NAME
部分,则可能会有效。
答案 1 :(得分:1)
[DOM文本节点“u'\ n'”,DOM元素:源位于0x709f80,DOM文本节点“u'\ n'”]
使用xml.dom.minidom库时,每个新行都被视为一个单独的子实体。不幸的是,这些新行不包含值e.ELEMENT_NAME值。看来你已经意识到了这一点,但最终的问题是你的意思是e.ELEMENT_NODE而不是e.ELEMENT_NAME
for e in sources.childNodes:
if e.nodeType == e.ELEMENT_NODE and e.localName == "source":
for source in e.childNodes:
if source.nodeType == e.ELEMENT_NODE and source.localName == "language":
print source.localName
print source.nodeType
print source.localName
country = doc.createElement("country")
e.appendChild(country)
干杯, [R