pgshsf Ответов: 1

Ironpython & C#: модуль не назван .....


Всем Привет,

В настоящее время я пытаюсь интегрировать скрипт python в c#. Цель этого скрипта-проанализировать xml-данные. Я привел свой код ниже. Поэтому всякий раз, когда я запускаю проект, я получаю следующую ошибку: Ошибка:нет модуля с именем xml.parsers. expat
Ошибка будет такой же, если я использую minidom/ElementTree

Программа. cs
----------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using IronPython.Modules;
using IronPython.Runtime;
using IronPython.Compiler;
using IronPython.Zlib;
using IronPython.SQLite;

namespace PyCsharpApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            var ipy = Python.CreateRuntime();
            dynamic test = ipy.UseFile("Test.py");
            test.start_element();
            Console.ReadLine();
        }
    }
}


test.py
--------
import xml.parsers.expat


# 3 handler functions
def start_element(name, attrs):
    print('Start element:', name, attrs)
def end_element(name):
    print('End element:', name)
def char_data(data):
    print('Character data:', repr(data))

p = xml.parsers.expat.ParserCreate()

p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data

p.Parse("""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>""", 1)


Что я уже пробовал:

Ссылка на эту ссылку Как решить исключение в IronPython с помощью синтаксического анализа и импорта?[^]

Но все равно столкнулся с той же проблемой. Пожалуйста помочь

Richard MacCutchan

Где находится модуль xml.parsers.expat?

1 Ответов

Рейтинг:
5

Thomas Daniels

Реализация IronPython не поставляется с xml.parsers.expat Однако есть обходной путь. Есть проект Фепи[^] это обеспечивает улучшения для IronPython. И XML.парсеров.эмигрант является одним из них. Скачать этот файл реализации экспата[^] и скопировать его в Lib\xml\parsers\expat.py в папке установки IronPython.


pgshsf

Спасибо за ответ. В дополнение к expat.py я также скопировал ниже 2 файла.
"c:/Python27/lib/xml/dom/expatbuilder.py" чтобы "c:/Program файлы (x86)/IronPython 2.7/lib / xml/dom"
"c:/Python27/lib/xml/sax/expatreader.py" чтобы "c:/Program файлы (x86)/IronPython 2.7/lib / xml/sax"

Еще одна вещь... Можем ли мы использовать модуль lxml с IronPython? Из моих первоначальных исследований я обнаружил, что использовать lxml с IronPython невозможно. Каковы наилучшие способы анализа xml-файлов с помощью IronPython? эмигрант или cElementTree или любой другой ...с точки зрения использования времени и памяти?

Thomas Daniels

Я не пробовал этого, но я считаю, что использование lxml должно работать, если только он не использует модули, которые не находятся в IronPython.

У меня не слишком большой опыт разбора XML на Python, поэтому я не могу дать сравнение модулей.

pgshsf

Окей. Спасибо за ответ.