首页 / XML / 在Python中处理空XML元素
在Python中处理空XML元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中处理空XML元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1549字,纯文字阅读大概需要3分钟。
内容图文
![在Python中处理空XML元素](/upload/InfoBanner/zyjiaocheng/729/1c17b982b26d425da56be38dc899e215.jpg)
我对minidom解析器处理空元素感到困惑,如下面的代码部分所示.
import xml.dom.minidom
doc = xml.dom.minidom.parseString('<value></value>')
print doc.firstChild.nodeValue.__repr__()
# Out: None
print doc.firstChild.toxml()
# Out: <value/>
doc = xml.dom.minidom.Document()
v = doc.appendChild(doc.createElement('value'))
v.appendChild(doc.createTextNode(''))
print v.firstChild.nodeValue.__repr__()
# Out: ''
print doc.firstChild.toxml()
# Out: <value></value>
我怎样才能获得一致的行为?我想接收空字符串作为空元素的值(这是我首先放入XML结构的东西).
解决方法:
破解打开xml.dom.minidom并搜索“/>”,我们发现:
# Method of the Element(Node) class.
def writexml(self, writer, indent="", addindent="", newl=""):
# [snip]
if self.childNodes:
writer.write(">%s"%(newl))
for node in self.childNodes:
node.writexml(writer,indent+addindent,addindent,newl)
writer.write("%s</%s>%s" % (indent,self.tagName,newl))
else:
writer.write("/>%s"%(newl))
我们可以从中推断出,只有当childNodes是一个空列表时,才会出现短端标签形式.实际上,这似乎是真的:
>>> doc = Document()
>>> v = doc.appendChild(doc.createElement('v'))
>>> v.toxml()
'<v/>'
>>> v.childNodes
[]
>>> v.appendChild(doc.createTextNode(''))
<DOM Text node "''">
>>> v.childNodes
[<DOM Text node "''">]
>>> v.toxml()
'<v></v>'
正如Lloyd所指出的那样,XML规范没有区分这两者.如果您的代码确实有所区别,那意味着您需要重新考虑如何序列化数据.
xml.dom.minidom只是显示不同的东西,因为它更容易编码.但是,您可以获得一致的输出.只需继承Element类并覆盖toxml方法,这样当没有非空文本内容的子节点时,它将打印出短端标签表单.然后monkeypatch模块使用您的新Element类.
内容总结
以上是互联网集市为您收集整理的在Python中处理空XML元素全部内容,希望文章能够帮你解决在Python中处理空XML元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。