Обработка XML, встроенного в сборку .NET, по сравнению с внешним файлом: что не так с моим кодом? - PullRequest
2 голосов
/ 23 декабря 2011

Скажите, пожалуйста, почему эти 2 не дают мне один и тот же объект XmlDocument.

  1. Я могу успешно загрузить внешний XML-файл, используя этот код, и успешно обработать XML-файл:

    var xElem = XElement.Load("Products.xml");
    
  2. Теперь я встраиваю xml-файл как встроенные ресурсы вместо сборки:

    var assembly = Assembly.GetExecutingAssembly();
    var stream = assembly.GetManifestResourceStream(this.GetType(), "AppNameSpace.Products.xml");
    var xElem= new XmlDocument();
    xElem.Load(stream);
    

Разве 2 xElem не должны быть одинаковыми? Оба XmlDocument, содержащие одинаковую информацию в Products.xml?

Что я сделал не так? Спасибо.

Если я хочу получить тот же xElem, что и в сценарии 1, что я должен делать в сценарии 2?

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Создайте свой XML-файл как ресурс, т. Е. Установите «Build Action» на «Embeded Resource» в окне свойств при добавлении файла в проект.

Смотрите следующие ссылки

Проверьте, существует ли ваше изображение в ресурсах с этим

thisExe = System.Reflection.Assembly.GetExecutingAssembly();
string [] resources = thisExe.GetManifestResourceNames();

Edit: Ok. Я только что проверил, вам нужно установить «Build Action» в «Embeded Resource». Установка его в «Ресурс» не будет работать. Сделайте это и проверьте имя ресурса с помощью приведенного выше кода. Я уверен, что это сработает.

2 голосов
/ 23 декабря 2011

"Products.xml" необходимо пространство имен приложений перед ним. Вы проверили, является ли поток или данные XML пустыми?

...