博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML的一些事
阅读量:5301 次
发布时间:2019-06-14

本文共 4182 字,大约阅读时间需要 13 分钟。

XML文件的优缺点:

使用XML作为传输格式的优势:

1. 格式统一, 符合标准
2. 容易与其他系统进行远程交互, 数据共享比较方便
3.调用将 XML 用作传输的现有服务。
4.使用 XSLT 可以动态转换 XML。这是企业服务总线 (ESB) 方案中的理想功能。

缺点:

1. XML文件格式文件庞大, 格式复杂, 传输占用带宽;
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护;
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码;
4. 服务器端和客户端解析XML花费资源和时间;

 现在大家大多数都用的json但是XML文件的重要性不可忽略,XML文件也是比较脆弱的!

 拼接的字符串写入到XML文件中:

public static void WriteXMLWay()        {            StringBuilder sb = new StringBuilder();            sb.Append("
"); sb.Append("
"); for (int i = 1; i <= GetSitmapCount(); i++) { sb.Append(GetSiteMapFormat(string.Format("http://www.website.com/sitemap/shenma/detail_{0}.xml", i))); } sb.Append("
"); try { //方法一 XmlDocument xd = new XmlDocument(); xd.LoadXml(sb.ToString()); xd.Save(@"\\sitemap.xml"); //方法二 File.WriteAllText(@"\\sitemap.xml", sb.ToString(), Encoding.UTF8); } catch (Exception ex) { XX.General.Exception.Error(ex, "ExecuteUpdateXmlforShenMa"); } }

去除XML文件里面的特殊字符:

public static string FormatXmlText(string strHtml)        {            string[] aryReg = { "'", "<", ">", "%", "\"\"", ",", ".", ">", "<", "\\", ">=", "=<", "-", "_", ";", "||", "[", "]", "&", "/", "-", "|", " ", };            for (int i = 0; i < aryReg.Length; i++)            {                strHtml = strHtml.Replace(aryReg[i], string.Empty);            }            return strHtml.Replace("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "");        }

XML序列化时生成CDATA节点解决方法:

public partial class Person    {        [XmlIgnore]        public string Name { get; set; }                [XmlIgnore]        public int Age { get; set; }            }    public partial class Person    {        [XmlElement("Name")]        public XmlNode aaa        {            get            {                XmlNode node = new XmlDocument().CreateNode(XmlNodeType.CDATA, "", "");                node.InnerText = Name;                return node;            }            set { } //省略则aaa不会被序列化        }        [XmlElement("Age")]        public XmlNode bbb        {            get            {                XmlNode node = new XmlDocument().CreateNode(XmlNodeType.Text, "", "");                node.InnerText = Age.ToString();                return node;            }            set { } //省略则bbb不会被序列化        }    }    class Program    {        static void Main(string[] args)        {            string result = string.Empty;            Person person = new Person() { Name = "dnawo", Age = 100 };            using (MemoryStream output = new MemoryStream())            {                XmlSerializer serializer = new XmlSerializer(person.GetType());                serializer.Serialize(output, person);                result = Encoding.UTF8.GetString(output.ToArray());            }            Console.WriteLine(result);            Console.ReadKey();        }    }

输出的XML代码:

100

字符串写入XML编码的问题:

XmlDocument xd = new XmlDocument();            using (Utf8StringWriter sw = new Utf8StringWriter())            {                try                {                    XmlSerializer xz = new XmlSerializer(shenma.GetType());                    xz.Serialize(sw, shenma);                    xd.LoadXml(sw.ToString());                    xd.Save(string.Format(@"\\SiteMap\shenma\detail_{0}.xml", i));                }                catch (Exception ex)                {                    XX.General.Exception.Error(ex, "ExecuteUpdateXmlforShenMa");                }                finally                {                    redisclient.SetString("sitemap_shenma_novelid", novelid.ToString());                    System.Threading.Thread.Sleep(5000);                }            }

//让stringreader的编码默认为utf-8string

public sealed class Utf8StringWriter : StringWriter        {            public override Encoding Encoding { get { return Encoding.UTF8; } }        }

 个人观点:XML文件逐渐被JSON代替,XML文件比较脆弱,用着没JSON好用!

 

转载于:https://www.cnblogs.com/viaiu/p/5220170.html

你可能感兴趣的文章
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
Java中Runnable和Thread的区别
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
LCA的两种求法
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
修改博客园css样式
查看>>
Python3 高阶函数
查看>>