首页 / XML / 没有递归搜索python的xml解析
没有递归搜索python的xml解析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了没有递归搜索python的xml解析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1948字,纯文字阅读大概需要3分钟。
内容图文
![没有递归搜索python的xml解析](/upload/InfoBanner/zyjiaocheng/742/cbf5c6f540ea4a9189258e5aacdbd7d6.jpg)
这让我精神恍惚,而且我可能已经长时间地抨击它,所以会感激一些帮助以防止失去/恢复我的理智!基于食物的xml只是我希望实现的一个例子.
我有以下文件,我试图将其放入图表中,因此小麦和水果是深度为0的父母.印度是小麦的孩子,深度为1,依此类推.
每个图层都有一些关键字.所以我想要的是
layer, depth, parent, keywords
wheat, 1, ROOT, [bread, pita, narn, loaf]
indian, 2, wheat [chapati]
mumbai, 3, indian, puri
fruit, 1,ROOT, [apple, orange, pear, lemon]
这是一个示例文件 –
<keywords>
<layer id="wheat">
<layer id="indian">
<keyword>chapati</keyword>
<layer id="mumbai">
<keyword>puri</keyword>
</layer>
</layer>
<keyword>bread</keyword>
<keyword>pita</keyword>
<keyword>narn</keyword>
<keyword>loaf</keyword>
</layer>
<layer id="fruit">
<keyword>apple</keyword>
<keyword>orange</keyword>
<keyword>pear</keyword>
<keyword>lemon</keyword>
</layer>
</keywords>
所以这不是一个图形问题,我可以做到这一点很容易.我正在努力解决XML问题.
如果我做了
xmldoc = minidom.parse(self.filename)
layers = xmldoc.getElementsByTagName('layer')
层只返回所有的图层元素,这是很多,并没有深度/层次的概念,据我所知,因为它进行递归搜索.
以下帖子很好,但没有提供我需要的概念. XML Parsing with Python and minidom.任何人都可以帮我解决这个问题吗?我可以发布我的代码,但是它被如此黑客攻击/有趣地破坏了我认为它不会对人类和野兽使用!
干杯
戴夫
解决方法:
使用lxml.特别是XPath.您可以通过“// layer”获取所有图层元素,无论级别如何,以及ID为“//layer[id='{}”] [0]“.format(id)的图层.直接在元素(或几个元素)下的关键字元素由“… / keyword”(其中……是一个产生应该搜索其后代的节点的查询).
获取给定节点的深度并不是那么简单,但仍然很容易.我没有找到现有的函数(afaik,这是在XPath的域之外 – 你可以检查查询中的深度,你只返回元素,即你可以返回具有特定深度而不是深度本身的节点) ,所以这里是一个手动滚动的(没有递归,因为它没有必要 – 但一般来说,使用XML意味着使用递归,不管它喜欢与否!):
def depth(node):
depth = 0
while node.getparent() is not None:
node = node.getParent()
depth += 1
return depth
如果你应该愚蠢到不使用最好的Python XML库,那么DOM可能会有类似的东西;)
内容总结
以上是互联网集市为您收集整理的没有递归搜索python的xml解析全部内容,希望文章能够帮你解决没有递归搜索python的xml解析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。