cou*_*011 73 c# xml linq linq-to-xml
我有一个包含其元素的xml文件
<ab:test>Str</ab:test>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用代码访问它时:
XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
System.Web.Services.Protocols.SoapException:服务器无法处理请求.---> System.Xml.XmlException:':'字符,十六进制值0x3A,不能包含在名称中.
我该如何访问它?
Jon*_*eet 110
如果要使用名称空间,LINQ to XML可以非常简单:
XNamespace ab = "http://whatever-the-url-is";
XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
查找xmlns:ab=...
文档中的一个部分,找出"ab"所指的命名空间URI.
Ser*_*gan 21
尝试将您的命名空间放入{
...... }
就像这样:
string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
Run Code Online (Sandbox Code Playgroud)
bar*_*ker 16
我遇到了同样的错误.我发现我正在添加代码......
var ab = "http://whatever-the-url-is";
Run Code Online (Sandbox Code Playgroud)
......但是ab被确定为一个字符串.这导致OP报告的错误.我没有使用VAR关键字,而是使用实际数据类型XNamespace ...
XNamespace ab = "http://whatever-the-url-is";
Run Code Online (Sandbox Code Playgroud)
......问题消失了.
您可能想要尝试的Get方法有一个重载,它考虑了命名空间.试试这个:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)