解决方案:
 
 1、把头信息<?xml version='1.0' encoding='UTF-8'?>,但是内容会丢失部分;
2、用XmlDocument解析就OK。
 
正确代码:
            string xmlStr = "<?xml version='1.0' encoding='UTF-8'?><ROOT><MAIN_BILL_ID>13905837718</MAIN_BILL_ID><PROD_ID>600000044996</PROD_ID></ROOT>";
xmlStr = "<?xml version='1.0' encoding='UTF-8'?><ROOT><MAIN_BILL_ID></MAIN_BILL_ID><DEL_BILLID_LIST><DEL_BILLID_INFO><BILL_ID>13905837765</BILL_ID><SHORT_NUM>661</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>13456381111</BILL_ID><SHORT_NUM>665</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>13819039202</BILL_ID><SHORT_NUM>662</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>15857301025</BILL_ID><SHORT_NUM>667</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>13857342868</BILL_ID><SHORT_NUM>666</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>13957366314</BILL_ID><SHORT_NUM>668</SHORT_NUM></DEL_BILLID_INFO><DEL_BILLID_INFO><BILL_ID>18267350517</BILL_ID><SHORT_NUM>669</SHORT_NUM></DEL_BILLID_INFO></DEL_BILLID_LIST></ROOT>"; StringBuilder rtn = new StringBuilder();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr);
XmlNodeList xmlNodeList = xmlDoc.GetElementsByTagName("ROOT");
foreach (XmlNode xmlNode in xmlNodeList)
{
//家长节点
XmlNodeList childXmlNodes1 = xmlNode.ChildNodes;
foreach (XmlNode childXmlNode1 in childXmlNodes1)
{
if (childXmlNode1.Name == "MAIN_BILL_ID")
{
string tel = childXmlNode1.InnerText;
if (rtn.Length > 0)
{
rtn.Append(",");
}
rtn.Append(tel);
}
//成员列表
XmlNodeList childXmlNodes2 = childXmlNode1.ChildNodes;
foreach (XmlNode childXmlNode2 in childXmlNodes2)
{
//成员详情
XmlNodeList childXmlNodes3 = childXmlNode2.ChildNodes;
foreach (XmlNode childXmlNode3 in childXmlNodes3)
{
if (childXmlNode3.Name == "BILL_ID" || childXmlNode3.Name == "SHORT_NUM")
{
string tel = childXmlNode3.InnerText;
if (rtn.Length > 0)
{
rtn.Append(",");
}
rtn.Append(tel);
}
}
}
}
} Console.WriteLine(rtn.ToString()); Console.WriteLine("");

  

 
 
 
错误信息:
意外的 XML 声明。XML 声明必须是文档中的第一个节点并且在它之前不允许出现空白字符。 第 1 行,位置 41。
代码:
 
 static void Main(string[] args)
{ string xmlStr = "<?xml version='1.0'encoding='UTF-8'?><ROOT><MAIN_BILL_ID>13905837718</MAIN_BILL_ID><PROD_ID>600000044996</PROD_ID></ROOT>"; StringBuilder rtn = new StringBuilder(); //xmlStr = xmlStr.Replace("<?xml version='1.0'encoding='UTF-8'?>", ""); if (!string.IsNullOrEmpty(xmlStr))
{
XmlReader xmlReader = null;
try
{
MemoryStream memStream = new MemoryStream();
XmlWriter writer = XmlWriter.Create(memStream);
writer.WriteRaw(xmlStr);
writer.Flush();
writer.Close();
memStream.Position = 0;
xmlReader = XmlReader.Create(memStream);
//xmlReader = XmlReader.Create(@"E:\01.xml");
while ( xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
switch (xmlReader.Name)
{
case "MAIN_BILL_ID":
string tel = xmlReader.ReadInnerXml().Trim();
if (string.IsNullOrEmpty(tel) == false)
{
rtn.Append(tel);
rtn.Append(";");
}
break;
case "BILL_ID":
tel = xmlReader.ReadInnerXml().Trim();
if (string.IsNullOrEmpty(tel) == false)
{
rtn.Append(tel);
rtn.Append(",");
}
break;
case "SHORT_NUM":
tel = xmlReader.ReadInnerXml().Trim();
if (string.IsNullOrEmpty(tel) == false)
{
rtn.Append(tel);
rtn.Append(";");
}
break;
}
}
}
}
catch (Exception ex)
{
rtn.Append(ex.Message);
}
finally
{
if (xmlReader != null)
{
xmlReader.Close();
}
}
} Console.WriteLine(rtn.ToString()); Console.WriteLine(""); Console.ReadKey();
}

  

XML内容作为String字符串读取报错的更多相关文章

  1. scala文件读取报错“java.nio.charset.MalformedInputException: Input length = 1”

    今天写spark程序的时候遇到了一个问题就是,读取文件的时候报了一个错:“Exception in thread "main" java.nio.charset.Malformed ...

  2. Flex文件读取报错

    Flex文件读取 1.s:WindowedApplication <?xml version="1.0" encoding="utf-8"?> &l ...

  3. WINDOWS下,中文JSON格式读取报错处理:ValueError: No JSON object could be decoded

    File "C:\Python27\lib\json\__init__.py", line 290, in load **kw) File "C:\Python27\li ...

  4. 【R读取报错】解决: Can't bind data because some arguments have the same name

    最近读取一个数据时,报如标题的错误. args[1] <- "RT_10-VS-RT_0" all <- read.delim(paste0(args[1]," ...

  5. pom.xml内容没有错,但一直报错红叉 解决办法

    转自:http://www.cnblogs.com/sxdcgaq8080/p/5590254.html [maven] pom.xml内容没有错,但一直报错红叉 解决办法 1.首先看一下下面的这两个 ...

  6. 关于string【】 数组 进行 toString() 之后无法将数组的内容连接起来组合成 string 字符串 的问题

    string[] to string 如果直接对一个string[] 数组进行 tostring()的操作,得到的值都是 system.string[] 如果想要将 string[] 数组内容转换为一 ...

  7. C++的std::string的“读时也拷贝”技术!

    C++的std::string的读时也拷贝技术! 嘿嘿,你没有看错,我也没有写错,是读时也拷贝技术.什么?我的错,你之前听说写过时才拷贝,嗯,不错的确有这门技术,英文是Copy On Write,简写 ...

  8. java基础18 String字符串和Object类(以及“equals” 和 “==”的解析)

    一.String字符串 问:笔试题:new String("abc")创建了几个对象?答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池 class Demo17 { ...

  9. Java将字符串写入文件与将文件内容读取到字符串

    原文:http://blog.csdn.net/liuweiyuxiang/article/details/69487326 将字符串写入文件 方法一 public void WriteStringT ...

随机推荐

  1. android实现 服务器功能

    package com.weijia.tests; import java.io.IOException; import java.net.InetSocketAddress; import java ...

  2. 客户端获取服务端自定义类数据 z

    客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...

  3. SVN安装及常见问题解决

    一.SVN简介 SVN作为以一种崛起的版本管理工具,是CVS的接班人.对于概念性的介绍我这里就不多赘述,网上很多介绍. 工作流程如下图: 二.安装 SVN的重要性就不再赘述,这里以Versionsv1 ...

  4. jquery on off 方法

    $("p").on("click",function(){alert("The paragraph was clicked.");}); $ ...

  5. Delphi调用外部程序函数:WinExec() 和ShellExecute详解

    1,WinExec():   WinExec主要运行EXE文件,不能运行其他类型的文件.不用引用特别单元.   原型:UINT WinExec(exePath,ShowCmd)   示例,我想要用记事 ...

  6. [SQL]patindex的用法

    返回指定表达式中某模式第一次出现的起始位置:如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零. Transact-SQL 语法约定 语法 PATINDEX ( '%pattern%' , ...

  7. [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...

  8. asp.net 自定义文本框

    using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using S ...

  9. 剑指offer习题集

    1.重载赋值运算符函数:(具体见代码) //普通做法 CMyString& CMyString::operator=(const CMyString& str) { if (this ...

  10. (转)配置Website的IIS时遇到的问题与解决方法

    在部署WebSite时遇到问题,刚好发现Eric Sun的文章,因此转载做个副本. 原文地址:http://www.cnblogs.com/mingmingruyuedlut/archive/2011 ...