ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XML(2)——Linq To XML:写

2019-09-06 20:43:49  阅读:270  来源: 互联网

标签:XML XElement Linq Add xeOrder new


1、读写XML有很多技术,Dom、Sax等,还有高级的读写技术XmlSerializer、 Linq To XML(System.Xml.Linq)、 System.Xml(XMLDocument)等, XmlSerializer要求对每种不同的文件都定义一套类,很麻烦,而Linq To XML则不需要单独创建类,当然更底层一些,代码比XmlSerializer多,灵活性更高。System.Xml下的类是2.0及之前操作xml推荐的,现在很多人也仍然在用这个namespace下的类,这个namespace下的类和Linq To XML非常相似,因此不用单独学。

2、核心类XElement,一个XElement表示一个节点,new XElement("Order"),创建一个名字为Order的标签,调用Add增加子节点,也是XElement 对象,和TreeView一样。

3、XDocument的Root属性表示根节点。

4、想得到字符串怎么办?ToString

5、调用XElement的Save方法将xml内容保存在Writer中。

6、代码示例:

            XElement xeOrder = new XElement("Order");
            xeOrder.Add(new XElement("CustomerName", "杨中科"));
            xeOrder.Add(new XElement("OrderNumber", "BJ200888"));
            XElement xeItems = new XElement("Items");
            xeOrder.Add(xeItems);

            XElement xeItem1 = new XElement("OrderItem");
            xeItem1.Add(new XElement("ItemName", "电脑"));
            xeItem1.Add(new XElement("Count", 3));
            xeItems.Add(xeItem1);

            XElement xeItem2 = new XElement("OrderItem");
            xeItem2.Add(new XElement("ItemName", "电视"));
            xeItem2.Add(new XElement("Count", 2));
            xeItems.Add(xeItem2);

            StringWriter writer = new StringWriter();
            xeOrder.Save(writer);
            Console.WriteLine(writer.ToString());

7、<!--fffff-->是注释(Comment),<connectionStrings>是元素(Element),他们都是节点(Node)。因为Nodes返回的既可能是注释,也可能是元素,所以只能返回Node类型。

8、xdoc.Elements()  //只返回元素

9、xdoc.Nodes()  //返回所有节点(包括注释等。)              

10、var task = xdoc.Descendants("DefaultTask").Single();  //Descendants()在子孙后代中找标签名为DefaultTask的元素慎用,容易取错结点。

标签:XML,XElement,Linq,Add,xeOrder,new
来源: https://blog.csdn.net/qq_34573534/article/details/100585877

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有