如何解决Linq to XML可以与冒号一起使用吗?
|var count = (from p in xmlDoc.Descendants(\"env:SE04Overprinting\")
select p).Count();
引发异常(有点,到达那里时会崩溃,但是使用手表会显示此错误)
xmlDoc.Descendants(\"env:SE04Overprinting\")
\'\“ env:SE04Overprinting \” \'引发了类型为\'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
确保ѭ9声明与XML中名称空间的值完全匹配。
, 您似乎正在考虑将该冒号作为要检索的元素名称的一部分。并非如此,它是名称空间前缀和本地名称之间的分隔符。
如果没有名称空间声明,则“ 10”是没有意义的。您需要在本地名称(实际情况为\“ SE04Overprinting \”)前面加上实际的名称空间(在要查找的节点上方某处查找xmlns:env=
)。
请参阅XName文档中的“在名称空间中创建XName”部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。