Как читать XML-файл напрямую, чтобы получить значение XElement? - PullRequest
7 голосов
/ 26 февраля 2011

Прямо сейчас я использую:

XElement xe = XElement.ReadFrom

, для которого требуется XmlReader:

XmlReader reader = XmlTextReader.Create

, для которого требуется строка, и которая требует от меня передать StringReader:

new StringReader

, для которого требуется TextReader/StreamReader, чтобы в конце концов передать ему путь к файлу:

TextReader textReader = new StreamReader ( file );

Самый простой способ сделать это?У меня уже есть код, который использует XElement, поэтому он работает нормально, но я хочу сократить количество шагов, чтобы получить XElement из XML-файла.Что-то вроде:

XElement xe = XElement.ReadFrom (string file);

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 26 февраля 2011

Джоан, используйте XDocument.Load (строка) :

XDocument doc = XDocument.Load ( "PurchaseOrder.xml");

Некоторые комментарии:

  1. Вы никогда не должны использовать XmlTextReader.Create. используйте XmlReader.Create. Это статический метод, поэтому не имеет значения, какой производный класс вы используете для ссылки на него. Использование XmlTextReader.Create вводит в заблуждение, поскольку похоже, что оно отличается от XmlReader.Create. Это не так.
  2. XmlReader.Create имеет перегрузку, которая принимает строку, как XDocument.Load: XmlReader.Create(string inputUri).
  3. На самом деле нет такой вещи, как XElement.ReadFrom. Это на самом деле XNode.ReadFrom.
3 голосов
/ 26 февраля 2011
XElement.ReadFrom(XmlReader.Create(fileName))

Но лучше явно управлять объектами файлового потока и объектами XmlReader - вы знаете, когда потоки закрыты ...

...