Code Bye

解析XML报错 根级别上的数据无效。 第 1 行,位置 1

通过接口获取到返回的字符串OutStr:
<?xml version="1.0" encoding="utf-8"?><Response><Result>0</Result><Message>-1</Message><ArgToken>48374645</ArgToken></Response>

解析时用
XmlDocument doc = new XmlDocument();
doc.LoadXml(OutStr.Trim());
调试到   doc.LoadXml(OutStr.Trim()); 已报错。
错误内容:根级别上的数据无效。 第 1 行,位置 1。
想问一下问题出在哪里了?

解决方案

10

string xml = @"
<?xml version=""1.0"" encoding=""utf-8""?><Response><Result>0</Result><Message>-1</Message><ArgToken>48374645</ArgToken></Response>";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml.Trim());
            
            XElement root = XElement.Parse(xml);//异常
            var e = root.Element("Result");

试着在前面加了个换行,异常了,你加个Trim试下,估计有换行吧

10

xml.Trim("\r", "\n").Replace(System.Environment.NewLine, string.Empty)

看你反正也没系统换行在里面,直接这样狠点的

10

string xml = @"
<?xml version=""1.0"" encoding=""utf-8""?><Response><Result>0</Result><Message>-1</Message><ArgToken>48374645</ArgToken></Response>
";
            xml = xml.Substring(xml.IndexOf("<"));
            Console.WriteLine(xml);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

这个本人用的是你问题里提供的,这样子后是可以了,正则替换居然匹配不到第一个尖括号之前的东西,神了奇了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明解析XML报错 根级别上的数据无效。 第 1 行,位置 1