提问人:user32882 提问时间:11/1/2023 更新时间:11/1/2023 访问量:16
无法使用 lxml 读取和查询 graphml 文件
Can't read and query graphml file with lxml
问:
我有一个 XML (GraphML) 文件,其松散定义如下:
<?xml version="1.0" encoding="utf-8"?>
<graphml xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/3.0" xmlns:y="http://www.yworks.com/xml/yfiles-common/3.0" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml.wpf/3.0/ygraphml.xsd " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://graphml.graphdrawing.org/xmlns">
<key .... />
<key .... />
<key .... />
<key .... />
<data .. />
<data .. />
<graph id="G">
<node id=".."></node>
<node id=".."></node>
<node id=".."></node>
<node id=".."></node>
<edge id=".."></edge>
<edge id=".."></edge>
<edge id=".."></edge>
</graph>
</graphml>
我有兴趣检索 python 列表中的所有元素以进行进一步处理。这是我到目前为止尝试过的:node
from lxml import etree
tree = etree.parse("test1.graphml")
nodes = tree.findall('//graphml/node')
print("done")
但是,这不起作用,我不知道为什么。我在这里做错了什么?
答:
0赞
user32882
11/1/2023
#1
在这种情况下,了解命名空间非常重要:
from lxml import etree
tree = etree.parse("test1.graphml")
root = tree.getroot()
namespaces = root.nsmap
nodes = root.findall('.//ns:node', namespaces={'ns': namespaces[None]})
print("done")
评论