如何使用 XLINQ 获取最里面的孩子

发布于 2024-08-15 04:28:44 字数 804 浏览 1 评论 0原文

我有这个 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 中获取所有文件节点,以便我可以获得源、哈希和瞬态的值以供我进一步的工作。

请用 XLINQ 告诉我...

I have this 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>

I want to fetch all the file node out of this XML so that i can get the values of source,hash and transient for my further work..

Please tell me in XLINQ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

枕头说它不想醒 2024-08-22 04:28:44

如果您不关心父节点,则可以使用后代选择器来简化代码:

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”

If you do not care about the parent nodes, you could use the Descendants selector to simplify the code:

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")
});

files will now store an IEnumerable of strongly typed (anonymous) objects, which expose the Properties 'Source' and 'Hash'

潦草背影 2024-08-22 04:28:44

使用元素选择器:

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");

请注意,由于清单标记中的无前缀 xmlns 声明,因此需要 XNamespace。

Use the Elements selector:

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");

Note the need for an XNamespace because of the no-prefix xmlns declaration in the manifest tag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文