我有一个xml文件,其中包含像
这样的元素<ab:test>Str</ab:test>
当我尝试使用代码访问它时:
XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();
它给了我这个错误:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---&GT; System.Xml.XmlException:':'字符,十六进制值0x3A,不能包含在名称中。
我该如何访问它?
答案 0 :(得分:102)
如果要使用名称空间,LINQ to XML可以非常简单:
XNamespace ab = "http://whatever-the-url-is";
XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
在文档中查找xmlns:ab=...
部分,找出“ab”所指的命名空间URI。
答案 1 :(得分:21)
尝试将您的命名空间放在{
... }
中,如下所示:
string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
答案 2 :(得分:12)
我遇到了同样的错误。我发现我正在添加代码......
var ab = "http://whatever-the-url-is";
...但是ab被确定为一个字符串。这导致OP报告的错误。我没有使用VAR关键字,而是使用实际数据类型XNamespace ...
XNamespace ab = "http://whatever-the-url-is";
......问题消失了。
答案 3 :(得分:6)
您可能想要尝试考虑命名空间的Get方法过载。试试这个:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
答案 4 :(得分:3)
尝试从文档中获取命名空间
var ns = doc.Root.Name.Namespace;
答案 5 :(得分:0)
删除 AndroidManifest.xml
和 AndroidManifest.xml.DISABLED
对我有用。