gpt4 book ai didi

c# - Linq to XML 可以使用冒号吗?

转载 作者:行者123 更新时间:2023-11-30 19:31:58 25 4
gpt4 key购买 nike

var count = (from p in xmlDoc.Descendants("env:SE04Overprinting")
select p).Count();

抛出一个异常(某种程度上,它在到达那里时崩溃了,但是使用 watch 显示了这个错误)

xmlDoc.Descendants("env:SE04Overprinting")

'"env:SE04Overprinting"' threw an exception of type 'System.Xml.XmlException' System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>

我四处查看了一下这个错误,但没有找到任何东西,然后尝试去掉冒号:

var count = (from p in xmlDoc.Descendants("env")
select p).Count();

这行得通。从文件中去除冒号是解决这个问题的唯一方法吗?

最佳答案

如果您的 XML 正确声明了命名空间,您可以这样做:

XNamespace env = "http://namespaceinXml";
var count = (from p in xmlDoc.Descendants(env + "SE04Overprinting")...

示例:

<foo xmlns:env="http://foo.bar">
<env:bar>test</env:bar>
</foo>

由于 bar 位于 env 命名空间中,您可以像这样检索它的值:

XDocument xdoc = XDocument.Load("test.xml");
XNamespace env = "http://foo.bar";
string bar = xdoc.Descendants(env+"bar").First().Value; //returns test

确保 XNamespace 声明完全匹配您的 XML 中命名空间的值。

关于c# - Linq to XML 可以使用冒号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com