• XML文件读写学习


     .NET 通过两种方式把 XML 数据写入文件:

    • 可以在内存中使用 XmlDocument 或 XDocument 类创建文档,结束时把它写入文件。
    • 用 XmlTextWrite 直接把文档写入流。在你写数据的时候会逐个节点输出数据。
    • 上述 3 个类都允许把信息写入任意的流,因此XML数据也可以写入到其他存储位置,如数据库中文本类型字段。

    读取 XML 文件

    • 可以使用 XmlDocument、XPathNavigator(只读)、XDocument 类一次性将文档加载到内存中。
    • XmlTextReader 类(基于流的读取器),每次读取文档的一个节点。

           基于流的方法减少了内存负担,但如果对 XML 文档执行耗时任务或为了不影响别人访问这个XML文档,还是选择在内存中操作的方式较好。

    基于内存的Xml处理:

    对内存中的 XML 的处理则更加方便,但没有单一、标准的方式。如下所有的类都支持对 XML 的读取和导航:

    • XmlDocument :它是 XML 数据的标准化接口,但对时间要求比较多。
    • XPathNavigator :它提供比 XML DOM 稍快、更有效的模型,并增强了一些搜索功能,但不能修改或保存 XML 。
    • XDocument :为处理 XML 提供一个更直观和有效的 API。从技术上讲,它是 LINQ to XML 的一部分,但即使没有 LINQ 查询,它也很有用。
     1 XmlDocument xmlDoc = new XmlDocument(); //建立Xml的定义声明
     2             XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0", "GB2312", null);
     3             xmlDoc.AppendChild(dec);
     4             //创建根节点
     5             XmlNode root = xmlDoc.CreateElement("Map");
     6             xmlDoc.AppendChild(root);
     7 
     8             ILayer player = axMapControl1.get_Layer(0);
     9             IFeatureLayer pfeatlayer = player as IFeatureLayer;
    10 
    11             XmlElement book = xmlDoc.CreateElement(player.Name);
    12             book.SetAttribute("ShapeType", pfeatlayer.FeatureClass.ShapeType.ToString());
    13             book.SetAttribute("DataSource", pfeatlayer.FeatureClass.FeatureType.ToString());
    14             IGeoFeatureLayer pgeo = pfeatlayer as IGeoFeatureLayer;
    15             IFeatureRenderer ren = pgeo.Renderer as IFeatureRenderer;
    16             IPersistStream stream = ren as IPersistStream;
    17 
    18             ESRI.ArcGIS.esriSystem.IMemoryBlobStream pMemoryBlobStream = new ESRI.ArcGIS.esriSystem.MemoryBlobStreamClass();
    19 
    20             IObjectStream pObjectStream = new ObjectStreamClass();
    21             pObjectStream.Stream = pMemoryBlobStream;
    22             IPersistStream pPersistStream = (IPersistStream)ren;
    23             pPersistStream.Save((IStream)pObjectStream, 0);
    24             pMemoryBlobStream.SaveToFile(@"Data\fox.render");
    25 
    26             XmlElement title = xmlDoc.CreateElement("Symbol");
    27             title.InnerText = @"Data\fox.render";
    28             book.AppendChild(title);
    29             XmlElement symType = xmlDoc.CreateElement("SymbolType");
    30             symType.InnerText = ren.GetType().Name;
    31             book.AppendChild(symType);
    32             
    33             root.AppendChild(book);
    34             xmlDoc.Save("Map.xml");

    参考文献:

    http://www.cnblogs.com/SkySoot/archive/2012/08/24/2654336.html

    http://www.cnblogs.com/SkySoot/archive/2012/08/27/2658160.html

    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    第10组 Alpha冲刺(4/4)
    python2中的新式类与经典类区别
    http请求Content-Type有几种
    2020 年软件设计师考试大纲
    11-Elasticsearch之-组合查询
    16-扩展阅读-摘录
    各种排序算法
    Vmware虚拟机三种网络模式详解(转载)
    无法访问 CentOS7服务器上应用监听的端口
    VsCode 常用插件清单
  • 原文地址:https://www.cnblogs.com/yhlx125/p/3043413.html
Copyright © 2020-2023  润新知