Как я могу получить все дочерние элементы в XML? - PullRequest
0 голосов
/ 06 июля 2010

Из этого XML-ответа: http://www.dreamincode.net/forums/xml.php?showuser=335389

Я хочу собрать всех друзей пользователей.Мне нужно получить всю информацию от друзей.Обычно с помощью, которую мне давали, я использовал уникальный идентификатор, чтобы захватить каждого, но поскольку у каждого пользователя нет одинаковых друзей, он должен быть динамичным, и я не могу ничего жестко кодировать.

Кто-нибудь может поделиться какой-нибудь магией XDocument?

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Вы можете получить все элементы <user> в элементе <friends> из XML-документа следующим образом:

var url = "http://www.dreamincode.net/forums/xml.php?showuser=335389";
var doc = XDocument.Load(url);
var friends = doc.Element("ipb").Element("profile")
                 .Element("friends").Elements("user");

// Or if you don't want to specify the whole path and you know that
// there is only a single element named <friends>:
var friends = doc.Descendant("friends").Elements("user");

Затем вы можете использовать LINQ для обработки коллекции.Например, чтобы создать IEnumerable<string> с именами всех frineds, вы можете написать:

var names = from fr in friends 
            select fr.Element("name").Value;

Если вам нужен уникальный идентификатор, вы можете прочитать элемент <id> аналогичным образом (если онявляется целым числом, вы также можете проанализировать его, используя Int32.Parse, например ...)

0 голосов
/ 06 июля 2010

вы, вероятно, можете использовать XPath-запрос

http://www.w3schools.com/xpath/xpath_examples.asp

в примерах используется JScript, но он также поддерживается в .NET

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