как получить внутреннее большинство детей, используя XLINQ - PullRequest
0 голосов
/ 21 декабря 2009

У меня есть этот xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" manifestId="{b91dc6f6-a837-4c5a-bdc8-77a93107af77}" mandatory="No" xmlns="urn:schemas-microsoft-com:PAG:updater-application-block:v2:manifest">
<files base="http:abc/def" hashComparison="Yes" hashProvider="SHA1Managed">
<file source="123.dll" hash="oZlt8qISQxTNETMTSAfhdzJisj+kgir7oWS64+VMbRRCOXXE" />
<file source="234.dll" hash="39UEf/AIp+pSfH4WbftTPVysryCDJBJd/URmUbANpTiAmGHm" />
<file source="abc.dll" hash="2X5d8WfRtBuzLKNZ8geVfy3AmOKaUD7cSI17PbRyF8ds66Cx"  />
</files>
</manifest>

Я хочу извлечь весь файловый узел из этого XML, чтобы я мог получить значения source, hash и transient для моей дальнейшей работы.

Пожалуйста, скажите мне в XLINQ ...

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Если вам не нужны родительские узлы, вы можете использовать селектор Descendants для упрощения кода:

XNamespace ns = "urn:schemas-microsoft-com:PAG:updater-application-block:v2:manifest";
var files = XDocument.Parse(xml).Descendants(ns + "file").Select(x => new {
   Source = (string)x.Attribute("source"),
   Hash =  (string)x.Attribute("hash")
});
Файлы

теперь будут хранить IEnumerable строго типизированных (анонимных) объектов, которые предоставляют свойства «Source» и «Hash»

0 голосов
/ 22 декабря 2009

Используйте селектор элементов:

XDocument d = XDocument.Parse(xml);
XNamespace ns = "urn:schemas-microsoft-com:PAG:updater-application-block:v2:manifest";
var files = d.Elements(ns + "manifest").Elements(ns + "files").Elements(ns + "file");

Обратите внимание на необходимость использования XNamespace из-за объявления префикса xmlns в теге manifest.

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