名称中不能包含hex值“0x3A”的“:”字符
我有一个包含它的元素的XML文件
<ab:test>Str</ab:test>
当我尝试使用代码访问它时:
XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();
这给了我这个错误:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。 —> System.Xml.XmlException:名称中不能包含“:”字符(hex值0x3A)。
我应该如何访问它?
如果你想使用命名空间,LINQ to XML使得这非常简单:
XNamespace ab = "http://whatever-the-url-is"; XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
在文档中查找xmlns:ab=...
部分,以找出哪个名称空间URI“ab”引用。
尝试把你的名字空间放在{
… }
如下所示:
string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
我有同样的错误。 我发现我正在添加代码…
var ab = "http://whatever-the-url-is";
但是ab被确定为一个string。 这导致了OP报告的错误。 我使用了实际的数据typesXNamespace,而不是使用VAR关键字。
XNamespace ab = "http://whatever-the-url-is";
…问题就消失了。
Get方法的重载可能需要考虑命名空间。 尝试这个:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
尝试从文档中获取命名空间
var ns = doc.Root.Name.Namespace;