解决方案:
 
 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. UML系列图--用例图

    UML-Unified Model Language 统一建模语言,又称标准建模语言.是用来对软件密集系统进行可视化建模的一种语言. 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示 ...

  2. linux 挂载(转载)

    From:http://forum.ubuntu.org.cn/viewtopic.php?t=257333 用linux,就一定要用linux的方式去思维.嗯,说的容易做起来难.我的D盘哪去了?恐怕 ...

  3. python抓取百度百科点赞数等动态数据

    利用selenium 模拟浏览器打开页面,加载后抓取数据 #!/usr/bin/env python # coding=utf-8 import urllib2 import re from bs4 ...

  4. UITapGestureRecognizer 的用法

    最近在项目中用到了手势操作,键盘回收时还是挺常用的,现在总结下,多谢网络上大神们的分享. 先分享下我在项目中用的代码: UITapGestureRecognizer * mytap=[[UITapGe ...

  5. uboot 、内核、文件系统移植

    1. 参考下面博客: http://blog.csdn.net/andylauren/article/details/51448353 2.查看u盘: $ sudo fdisk -l 3. 格式化u盘 ...

  6. DSS 搭建手机流媒体服务器

    最近研究了一下手机流媒体服务器的搭建,目的是实现通过3G手机看在线视频. 开始的时候研究了一下 Tudou手机版 ,可它哪并没有实现在线播放,因为视频地址是 http 协议的.参看了许多文章,终于了解 ...

  7. 20145305《JAVA程序设计》课程总结

    每周读书笔记链接汇总 问卷调查 第0周学习心得 第1周学习总结 第2周学习总结 第3周学习总结 第4周学习总结 第5周学习总结 第6周学习总结 第7周学习总结 第8周学习总结 第9周学习总结 第10周 ...

  8. 使用t-sql从身份证号中提取生日

    使用t-sql从身份证号中提取生日,一下是转换16位身份证号的例子,仅供参考. create function getDateFromID( ) ) returns datetime as begin ...

  9. relative和absolute的效果

    我对这样几个效果不是特别理解: 1.float的效果: 就是搞不清楚我想要什么效果的时候可以将某个标签设置为float,一直没总结出什么规律. 2.relative和absolute的效果: 也是不清 ...

  10. Android--ListView显示列表数据

    简单的显示 import android.os.Bundle; import android.app.ListActivity; import android.view.View; import an ...