热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#中对xml文件的操作

Xml是扩展标记语言的简写,是一种开发的文本格式。关于它的更多情况可以通过w3组织了解http:www.w3.orgTR1998REC-xml-19980210。如果
Xml是扩展标记语言的简写,是一种开发的文本格式。关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210。如果你不知道它,那你就out太多了。
.Net是如何处理Xml的?

1.通过XmlDocument读写Xml文档
2.通过XmlWriter和XmlReader读写Xml文档
3.使用Linq to xml存取XML
4.通过XmlScheme定义固定格式xml文档
5.Xml序列化或者反序列化类
6.通过XPath查找Xml节点
7.通过Xslt转化Xml格式
通过XmlDocument读写Xml文档
有如下一段Xml:
view sourceprint?
xml version="1.0" encoding="utf-8" ?>
<students>
  
  <student name&#61;"张平">
    <courses>
      <course name&#61;"语文?">
        <teacherComment>
          
        这里是语文老师的批注
        ]]>
        teacherComment>      
    course>
  
      <course name&#61;"数学">
        <teacherComment>
          
        这里是数学老师的批注
        ]]>
        teacherComment>
      course>
    courses>
  student>
students>
1.如何使用XmlDocument读取Xml

我要用一段代码遍历所有Student&#xff0c;并打印Student的所有属性和子节点的值
view sourceprint?
/*玉开博客 http://www.cnblogs.com/yukaizhao/ */
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
  
namespace XmlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string xmlFilePath &#61; &#64;"X:\about.net\example\XmlExample\1.xml";
            XmlDocument doc &#61; new XmlDocument();
            doc.Load(xmlFilePath);
  
            //使用xpath表达式选择文档中所有的student子节点
            XmlNodeList studentNodeList &#61; doc.SelectNodes("/students/student");
            if (studentNodeList !&#61; null)
            {
                foreach (XmlNode studentNode in studentNodeList)
                {
                    //通过Attributes获得属性名字为name的属性
                    string name &#61; studentNode.Attributes["name"].Value;
                    Console.WriteLine("Student:" &#43; name);
  
                    //通过SelectSingleNode方法获得当前节点下的courses子节点
                    XmlNode coursesNode &#61; studentNode.SelectSingleNode("courses");
  
                    //通过ChildNodes属性获得courseNode的所有一级子节点
                    XmlNodeList courseNodeList &#61; coursesNode.ChildNodes;
                    if (courseNodeList !&#61; null)
                    {
                        foreach (XmlNode courseNode in courseNodeList)
                        {
                            Console.Write("\t");
                            Console.Write(courseNode.Attributes["name"].Value);
                            Console.Write("老师评语");
                            //通过FirstNode属性可以获得课程节点的第一个子节点&#xff0c;LastNode可以获得最后一个子节点
                            XmlNode teacherCommentNode &#61; courseNode.FirstChild;
                            //读取CData节点
                            XmlCDataSection cdata &#61; (XmlCDataSection)teacherCommentNode.FirstChild;
                            Console.WriteLine(cdata.InnerText.Trim());
                        }
                    }
                }
            }
  
            Console.Write("\r\nPress any key to continue....");
            Console.Read();
        }
    }
}
XmlDocument本身是从XmlNode继承的&#xff0c;读Xml节点可以通过FirstChild&#xff0c;LastChild&#xff0c;或者NextSibling&#xff0c;PreviousSibling读取单个节点&#xff0c;或者通过ChildNodes读取所有子节点。还可以使用XPath表达式使用SelectNodes(string xpath)或者SelectSingleNode(string xpath)读取单个或者多个符合条件的节点。
2.如何通过XmlDocument编辑Xml
同样是读取Xml中的xml例子&#xff0c;我们这次要用csharp代码生成xml&#xff0c;如下代码&#xff1a;
view sourceprint?
/*玉开博客 http://www.cnblogs.com/yukaizhao/ */
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
  
namespace WriteXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xmlDoc &#61; new XmlDocument();
            //创建Xml声明部分&#xff0c;即
            xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");
  
            //创建根节点
            XmlNode rootNode &#61; xmlDoc.CreateElement("students");
  
            //创建student子节点
            XmlNode studentNode &#61; xmlDoc.CreateElement("student");
            //创建一个属性
            XmlAttribute nameAttribute &#61; xmlDoc.CreateAttribute("name");
            nameAttribute .Value &#61; "张同学";
            //xml节点附件属性
            studentNode.Attributes.Append(nameAttribute);
  
             
            //创建courses子节点
            XmlNode coursesNode &#61; xmlDoc.CreateElement("courses");
            XmlNode courseNode1 &#61; xmlDoc.CreateElement("course");
            XmlAttribute courseNameAttr &#61; xmlDoc.CreateAttribute("name");
            courseNameAttr.Value &#61; "语文";
            courseNode1.Attributes.Append(courseNameAttr);
            XmlNode teacherCommentNode &#61; xmlDoc.CreateElement("teacherComment");
            //创建Cdata块
            XmlCDataSection cdata &#61; xmlDoc.CreateCDataSection("这是语文老师的批注");
            teacherCommentNode.AppendChild(cdata);
            courseNode1.AppendChild(teacherCommentNode);
            coursesNode.AppendChild(courseNode1);
            //附加子节点
            studentNode.AppendChild(coursesNode);
  
            rootNode.AppendChild(studentNode);
            //附加根节点
            xmlDoc.AppendChild(rootNode);
  
            //保存Xml文档
            xmlDoc.Save(&#64;"d:\test.xml");
  
            Console.WriteLine("已保存Xml文档");
  
  
        }
    }
}

使用XmlDocument生成xml的要点在于使用xmlDocument的实例的CreateElement创建XmlNode或者通过CreateAttribute方法创建属性&#xff0c;并通过AppendChild方法附加xml节点&#xff0c;通过AppendAttribute附加Attribute到节点的属性集合。

转:https://www.cnblogs.com/wsl2011/archive/2011/07/19/2110729.html



推荐阅读
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 为了优化用户体验,本文探讨了如何调整下拉菜单的宽度。通过合理设置宽度,可以提升界面的美观性和易用性。文章提供了具体的代码示例,帮助开发者实现这一目标。例如,可以通过 CSS 或 JavaScript 来动态调整下拉菜单的宽度,确保其在不同设备和屏幕尺寸上都能保持良好的显示效果。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有