Как я могу исправить код для чтения файла XML? - PullRequest
0 голосов
/ 10 марта 2011

Этот код работает как есть, но когда я ссылаюсь на внешний XML-файл в doc.Loadxml, он перестает работать. Как я могу заставить его работать? Я не совсем понимаю.

Я использую это для вызова GetXmlData и предоставления источника для gridview: GridView1.ItemsSource = GetXmlData ();

   private static object GetXmlData()
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8"" ?>
        <Products>
          <Product>
            <ID>1</ID>
            <Name>ASP.NET</Name>
          </Product>
        </Products>
         ");

        XmlDataProvider provider = new XmlDataProvider();
        provider.IsAsynchronous = false;
        provider.Document = doc;
        provider.XPath = "Products/Product";

        return new ObservableCollection<XmlNode>((IEnumerable<XmlNode>)provider.Data);
    }

Ответы [ 3 ]

2 голосов
/ 10 марта 2011

Вам нужно

  doc.Load(fileName);

вместо

  doc.LoadXml(xml);
1 голос
/ 10 марта 2011

XMLDocument имеет несколько Load методов, см. их с описанием :

Load(Stream)      Loads the XML document from the specified stream.
Load(String)      Loads the XML document from the specified URL.
Load(TextReader)  Loads the XML document from the specified TextReader.
Load(XmlReader)   Loads the XML document from the specified XmlReader.
LoadXml(string)   Loads the XML document from the specified string.

Вы используете последний, который, как описано, использовался для загрузки XML из строки.

Так как вам нужно загрузить XML из файла, вы должны использовать метод Load, а не LoadXml. Я думаю, что второй метод лучше подходит для вашей ситуации. Вы можете передать полный путь XML-файла.

0 голосов
/ 10 марта 2011

Это должно помочь вам:

XmlDocument doc = new XmlDocument();
doc.Load(file_path);

Метод, который вы вызываете, загружает только xml из строки. Вам нужно прочитать его из файла, который требует другого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...