• LINQ TO XML 个人的一些心得1


              最近没事做,刚来到一个新公司。写了一些处理xml的项目  就是把一些xml的数据处理后存储到数据库中。原本还是准备用原来的xml来写的。在群里有个人说,用linq to xml 好了,比较快捷。就看了下。现在写下心得。

             1. linq to xml 的类主要用到的介绍:

    XDocument 表示一个xml文档
    XElement 表示一个元素
    XAttricbute 表示一个xml属性
    XComment 表示一个XML注释
    XDeclaration 表示一个xml声明
    XCData 表示一个CDATA文本节点

             2.  创建一个新的xml文档  XDocument    创建一个XElement的可以去看下msdn中创建XElement的实例

            static void CreateFunctionalXmlDoc()
            {
                XDocument inventoryDoc =
                new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XComment("Current Inventory of AutoLot"),
                new XElement("Inventory",
                new XElement("Car", new XAttribute("ID", "1"),
                new XElement("Color", "Green"),
                new XElement("Make", "BMW"),
                new XElement("PetName", "Stan")
                ),
                new XElement("Car", new XAttribute("ID", "2"),
                new XElement("Color", "Pink"),
                new XElement("Make", "Yugo"),
                new XElement("PetName", "Melvin")
                )
                )
                );
                // Display the document and save to disk.
                Console.WriteLine(inventoryDoc);
                inventoryDoc.Save("SimpleInventory.xml");
            }

            显示xml内容为:

     

          文件中xml内容为

             2. 读取一个xml文档

                     在XDocument类和XElement类中,都可以找到一个load和Parse的两个方法 都是加载一个xml到内存中

    这里我就贴一段  XDocument类的代码  其中load stream的类没有写,因为这个需要4.0以后的  vs2008最高只有3.5  所以我就空出来了。如果哪位大大愿意完善下记得发给我哈。

    /// <summary>
            /// 初始化xml信息
            /// </summary>
            /// <returns></returns>
            public XDocument InitializeXMLData()
            {
                XDocument data = null;
                if (!File.Exists((string)ob))
                {
                    data = readxml(ob);
                }
      else
                {
                    data = XDocument.Load((string)ob);
                }
    return data; } #region 读取xml 支持 string ,TextReader,XmlReader 4以后支持 Stream /// <summary> /// 读取xml 支持 string ,TextReader,XmlReader 4以后支持 Stream /// </summary> /// <param name="ob"></param> /// <returns></returns> public XDocument readxml(object ob) { //Type t = ob.GetType(); XDocument xmldoc = null; if (ob == null) ; else if (ob is string) xmldoc = readxml((string)ob); else if (ob is Stream) xmldoc = readxml((Stream)ob); else if (ob is TextReader) xmldoc = readxml((TextReader)ob); else if (ob is XmlReader) xmldoc = readxml((XmlReader)ob); return xmldoc; } /// <summary> /// 读取xml /// </summary> /// <param name="xmlstring">xml字符串</param> /// <returns></returns> private XDocument readxml(string xmlstring) { XDocument xmldoc = null; xmldoc = XDocument.Parse(ReplaceXmlSpecialCharacter(xmlstring)); return xmldoc; } /// <summary> /// 读取xml /// </summary> /// <param name="stream">数据流</param> /// <returns></returns> private XDocument readxml(Stream stream) { XDocument xmldoc = null; xmldoc = XDocument.Load(""); return xmldoc; } /// <summary> /// 读取xml /// </summary> /// <param name="TextReader"></param> /// <returns></returns> private XDocument readxml(TextReader TextReader) { XDocument xmldoc = null; xmldoc = XDocument.Load(TextReader); return xmldoc; } /// <summary> /// 读取xml /// </summary> /// <param name="XmlReader"></param> /// <returns></returns> private XDocument readxml(XmlReader XmlReader) { XDocument xmldoc = null; xmldoc = XDocument.Load(XmlReader); return xmldoc; } #endregion

    该代码中的ob为一个object对象  它可以是一个 xml组成的string ,或者是一个xml文件的path ,TextReader,XmlReader , Stream

    XElement的代码相似这里就不贴了,反正 XElement = XDocument.xelement(“元素”)。

    实例:  首先测试一个path的

    运行代码如下:

     LINQ_Clss.LINQ_TO_Xml xml = new LINQ_TO_Xml();
                xml.ob = @"E:小黑各种功能测试版LINQ ClssLINQ ClssXMLSimpleInventory.xml";
                Console.WriteLine(xml.InitializeXMLData());
                Console.ReadKey();

    运行结果:

    再来一个实例  给一段xml的字符串  代码如下:

     LINQ_Clss.LINQ_TO_Xml xml = new LINQ_TO_Xml();
                xml.ob = "<!--Current Inventory of AutoLot--><Inventory><Car ID="1"><Color>Green</Color><Make>BMW</Make><PetName>Stan</PetName></Car><Car ID="2"><Color>Pink</Color><Make>Yugo</Make><PetName>Melvin</PetName></Car></Inventory>";
                Console.WriteLine(xml.InitializeXMLData());
                Console.ReadKey();

    运行结果:

    至于其他的两个TextReader和XmlReader  还有一个Stream  哪位大大愿意测试的。可以上下图

    今天先到这里,明天我整一些linq的查询给你们,其实园内有一篇文章对于这个查询写的蛮详细的,我这边把地址贴下  LINQ标准查询操作符 

  • 相关阅读:
    css换行
    <a>标签里的<img>标签点击虚线框
    iframe子页面调用父页面元素
    快捷键
    用css绘制三角形
    解决div被embed,object覆盖问题
    一些兼容问题
    兼容padding
    记一次用html2canvas将页面内容生成海报并保存图片到本地
    PUPPETEER安装遇到 ERROR:CHROMIUM REVISION IS NOT DOWNLOADED.的解决办法
  • 原文地址:https://www.cnblogs.com/cnwisdom/p/3291269.html
Copyright © 2020-2023  润新知