Как извлечь содержимое XML переменной XDocument? - PullRequest
0 голосов
/ 13 октября 2010

У меня есть полный XML-файл в переменной XDocument, который я получаю из некоторого API, подобного этому

using (var reader = XmlReader.Create("website"))
        {
            doc = XDocument.Load(reader);
        }

Мне нужно получить структуру XML и перемещаться по его узлам, но через переменную XDocument я получаю только весь документ в одном узле и не могу извлечь каждый узел отдельно. Так какое-либо решение или я должен использовать другой способ?

Ответы [ 4 ]

2 голосов
/ 13 октября 2010

http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx хорошая статья о его создании

Вы также можете использовать linq для запроса

, например,

var loaded = XDocument.Load("sdaf");
var q = from c in loaded.Descendants("contact")
        where (int)c.Attribute("contactId") < 4
        select (string)c.Element("firstName") + “ “ +
      (string)c.Element("lastName");

снятстраница, на которую я ссылался выше.

По моему мнению, объекты XDocument и XElement надрывают задницу.Если они вам не нравятся, тогда изучите xpath и xslt.

1 голос
/ 13 октября 2010

Чтобы получить непосредственные дочерние узлы вашего XDocument, вы можете попробовать

    using (var reader = XmlReader.Create("website"))
    {
        var doc = XDocument.Load(reader);
        var childElements = doc.Elements();
    }

Затем выполнить дальнейшую обработку, такую ​​как childElements.Descendants("name").Single().Value.

0 голосов
/ 13 октября 2010
XmlDocument xdoc;
xdoc = new XmlDocument();
xdoc.Load(XmlReader.Create("weblink"));

Невозможно проанализировать XDocument и извлечь его значения XML, что возможно в XmlDocument

0 голосов
/ 13 октября 2010
string xml = reader.ReadToEnd();

XmlDocument thisXmlDoc = new XmlDocument();
thisXmlDoc.LoadXml(xml); // In your case DOC

reader.Close();

XPathNavigator thisNavigator = thisXmlDoc.CreateNavigator();
XPathNodeIterator dossierNodes = thisNavigator.Select("Nodename/node");

List<Dossier> thisList = GetDossiers(dossierNodes);
thisDossierList = thisList.OrderBy(c => c.something).ToList();

он использует объекты XDocument, а не объекты XMLDocument.- Джон Николас 52 секунды назад

Черт, ты прав.Сожалею!Только пытался помочь ...

...