XML 解析默认去掉命名空间和注释

  注:最近在写xml操作这块东西,中间遇到了一些坑 其中就包含下面一个 遇到xml文件包含 命名空间或者注释 这时反序列化 会报错。下面就是解决方案
1 //创建xml文档

  2 XmlDocument xmlDoc = new XmlDocument();

  3 xmlDoc.Load(@"C:\Users\Tony\Downloads\统一标准报文格式.xml");

  4 //去掉注释 和命名空间

  5 string newXml = System.Text.RegularExpressions.Regex.Replace(

  6 xmlDoc.OuterXml,

  7 @"(xmlns:?[^=]*=[""][^""]*[""])", "",

  8 System.Text.RegularExpressions.RegexOptions.IgnoreCase |

  9 System.Text.RegularExpressions.RegexOptions.Multiline);

  10         //这里是反序列化成实体

  11        root info= XmlHelper.ToObject(newXml);

复制代码

  1 ///

 

  2 /// XML帮助类

  3 ///

 

  4 public class XmlHelper

  5 {

  6 ///

 

  7 /// xml转实体

  8 ///

 

  9 ///

  10 ///xml字符串

  11 ///

  12 public static T ToObject(string content) where T : new()

  13 {

  14 using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)))

  15 {

  16 XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

  17 return (T)xmlFormat.Deserialize(stream);

  18 }

  19 }

  20

  21 ///

 

  22 /// 实体转xml

  23 ///

 

  24 ///

  25 ///

  26 ///

  27 public static string ToXml(T t) where T : new()

  28 {

  29 XmlSerializer xmlSerializer = new XmlSerializer(t.GetType());

  30 Stream stream = new MemoryStream();

  31 xmlSerializer.Serialize(stream, t);

  32 stream.Position = 0;

  33 StreamReader reader = new StreamReader(stream);

  34 string text = reader.ReadToEnd();

  35 return text;

  36 }

  37 }

  复制代码(编辑:雷林鹏 来源:网络)

posted @ 2018-08-08 10:10  雷林鹏  阅读(702)  评论(0编辑  收藏  举报