系统在 python 2.7.2 中使用 dom 解析器。目标是提取 .db 文件并在 sql server 上使用它。我目前对 sqlite3 库没有问题。我已经阅读了有关如何在解析 xml 文件时处理丢失元素的类似问题/答案。但我仍然无法找出解决方案。xml 有 15000 多个元素。这是来自xml的基本代码:
<topo>
<vlancard>
<id>4545</id>
<nodeValue>21</nodeValue>
<vlanName>voice</vlanName>
</vlancard>
<vlancard>
<id>1234</id>
<nodeValue>42</nodeValue>
<vlanName>camera</vlanName>
</vlancard>
<vlancard>
<id>9876</id>
<nodeValue>84</nodeValue>
</vlancard>
</topo>
与第三个元素一样,有几个元素没有节点。这会导致元素编号不一致。IE
from xml.dom import minidom
xmldoc = minidom.parse('c:\vlan.xml')
vlId = xmldoc.getElementsByTagName('id')
vlValue = xmldoc.getElementsByTagName('nodeValue')
vlName = xmldoc.getElementsByTagName('vlanName')
运行模块后:
IndexError: list index out of range
>>> len(id)
16163
>>> len(vlanName)
16155
由于这个问题,对元素进行排序会出现问题。在打印表格时,解析器传递了丢失的元素并且元素顺序被混淆了。我使用一个简单的 while 循环将值插入到表中。
x=0
while x < (len(vlId)):
c.execute('''insert into vlan ('id','nodeValue','vlanName') values ('%s','%s','%s') ''' %(id[x].firstChild.nodeValue, nodeValue[x].firstChild.nodeValue, vlanName[x].firstChild.nodeValue))
x= x+1
我还能怎么做?任何帮助将不胜感激。
优素福