Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET2.0中的IronPythonXML读取器_Python_Xml_Ironpython - Fatal编程技术网

.NET2.0中的IronPythonXML读取器

.NET2.0中的IronPythonXML读取器,python,xml,ironpython,Python,Xml,Ironpython,我创建了一个XML读取器,它创建了一个非常愚蠢的格式化列表,但即将使用它的脚本需要这样做 import xml.etree.ElementTree as ET PATH_IN = "<Path>\sweep.xml" tree = ET.parse(PATH_IN) root = tree.getroot() Input = [] for project in root: for design in project: list_lvl2 = []

我创建了一个XML读取器,它创建了一个非常愚蠢的格式化列表,但即将使用它的脚本需要这样做

import xml.etree.ElementTree as ET

PATH_IN = "<Path>\sweep.xml"

tree = ET.parse(PATH_IN)
root = tree.getroot()

Input = []
for project in root:

    for design in project:
        list_lvl2 = []
        list_lvl2.append(project.get('name'))
        list_lvl2.append(design.get('name'))
        list_lvl2.append('')

        list_lvl3 = [] 
        for param in design:
            list_lvl4 = []
            list_lvl4.append(param.get('name'))
            list_lvl5 = []
            for steps in param:
                list_lvl5.append(steps.text)
            list_lvl4.append(list_lvl5)
            list_lvl4.append(param.get('unit'))
            list_lvl3.append(list_lvl4)
        list_lvl2.append(list_lvl3)
        Input.append(list_lvl2)

这里的基本问题是ElementTree使用expat进行xml解析,但不能从IronPython使用expat(通过CPython包装器提供给Python的C库)


但是,ElementTree可以使用由不同解析器驱动的不同树生成器,例如.NET中的XMLReader解析器。搜索“xmlreader treebuilder”会产生这样的结果,它似乎既描述了您的问题,又提供了一个使用xmlreader的替代treebuilder实现(MIT许可证)。

默认情况下,
ElementTree
使用expat解析xml。您的另一个脚本正在编写xml而不是解析它,因此没有问题。不过,你会犯这样的错误还是很奇怪的。也许你的IronPython安装坏了?尝试使用,或者甚至使用.NET XML解析器查找/制作您自己的treebuilder。我的iron python字典中没有elementtree文件夹。还有其他不使用expat的XML阅读器吗?我已经找到了这个。这个库似乎在我必须在工作中使用的IronPython实现中丢失了。在那里我可以使用SimpleXMLTreeBuilder。但是如果没有你的帮助,我还是无法理解,所以非常感谢你,expat在最新的Iron Python版本中工作,似乎他们只是在2.6版本中遇到了问题
*Global - Messages
  [error] ImportException: No module named expat; use SimpleXMLTreeBuilder instead  In file "<Path>/sweep.py", line 36 ---- While executing script: <Path>/sweep.py
  [error] Error executing script in <Path>\sweep.py:
  [error] ImportException: No module named expat; use SimpleXMLTreeBuilder instead  In file "<Path>/sweep.py", line 36 ---- While executing script: <Path>/sweep.py
  [error] Error executing script in <Path>\sweep.py:
import xml.etree.ElementTree as ET

path = "<Path>\projects.xml"

root = ET.Element('xml')
projects = oDesktop.GetProjectList()
for i in projects:
    project = ET.SubElement(root,'project')
    project.set('name', i)
    designs = oDesktop.SetActiveProject(i).GetTopDesignList()
    for u in designs:
        design = ET.SubElement(project,'design')
        design.set('name', u)
        vars = oDesktop.SetActiveProject(i).GetDesign(u).GetVariables()
        for z in vars:
            param = ET.SubElement(design,'param')
            param.set('name', z)
            value = ET.SubElement(param,'value')
            value.text = oDesktop.SetActiveProject(i).GetDesign(u).GetVariableValue(z)
f = open(path, "w")
tree = ET.ElementTree(root)
tree.write(f)

f.close()
*Global - Messages
  [error] ImportException: No module named elementtree  In file "<Path>/sweep.py", line 3 ---- While executing script: <Path>/sweep.py
  [error] Error executing script in <Path>\sweep.py: