通过XmlDocument读写Xml文档参考地址

/// <summary>
/// 获取一个报表的参数  http://blog.csdn.net/hdhai9451/article/details/12170069
/// </summary>
public static ReportAdapterSection GetReportAdapterSectionByID(string ReportID, ProfileRole RoleType, ReportTemplateType TemplateType)
{
    ReportAdapterSection reportModel = new ReportAdapterSection();
    XmlDocument xmlDoc = new XmlDocument();
    string configFile = GetReportConfigFile(RoleType, TemplateType);
    xmlDoc.Load(configFile);
    XmlNodeList nodes = xmlDoc.SelectSingleNode("ReportConfig").ChildNodes;
    List<ReportParamSection> list = new List<ReportParamSection>();

    foreach (XmlElement node in nodes)
    {
        if (node.HasChildNodes && node.Attributes["ID"].Value == ReportID)
        {
            string MainID = node.Attributes["ID"].Value;
            reportModel.ID = MainID;
            reportModel.Title = node.Attributes["Title"].Value;
            string UniqueKey = string.Empty;
            if (node.Attributes["UniqueKey"] != null)
            {
                UniqueKey = node.Attributes["UniqueKey"].Value;
            }
            reportModel.UniqueKey = UniqueKey;
            string SummaryAmtOrNum = string.Empty;
            if (node.Attributes["SummaryAmtOrNum"] != null)
            {
                SummaryAmtOrNum = node.Attributes["SummaryAmtOrNum"].Value;
            }
            reportModel.SummaryAmtOrNum = SummaryAmtOrNum;

            bool IsAddTotal = false;
            if (node.Attributes["IsAddTotal"] != null)
            {
                IsAddTotal = node.Attributes["IsAddTotal"].Value == "1" ? true : false;
            }
            reportModel.IsAddTotal = IsAddTotal;
            XmlNode paramsNode = node.SelectSingleNode("Params");
            if (paramsNode != null && paramsNode.HasChildNodes)
            {
                foreach (XmlElement item in paramsNode)
                {
                    ReportParamSection model = new ReportParamSection();
                    model.MainID = MainID;
                    model.Title = item.Attributes["ParaTitle"].Value;
                    model.Type = (ReportParaType)Enum.Parse(typeof(ReportParaType), item.Attributes["ParaType"].Value);

                    //参数
                    string paras1 = string.Empty, paras2 = string.Empty;
                    paras1 = item.Attributes["Para1Name"].Value;
                    if (item.Attributes["Para2Name"] != null)
                    {
                        paras2 = item.Attributes["Para2Name"].Value;
                    }
                    model.Params = new string[] { paras1, paras2 };
                    //默认值
                    string dvalue1 = string.Empty, dvalue2 = string.Empty;
                    if (item.Attributes["Default1Value"] != null)
                    {
                        dvalue1 = item.Attributes["Default1Value"].Value;
                    }
                    if (item.Attributes["Default2Value"] != null)
                    {
                        dvalue2 = item.Attributes["Default2Value"].Value;
                    }
                    model.DefaultValues = new string[] { dvalue1, dvalue2 };
                    //条件标题
                    string ConditionTitle = string.Empty;
                    if (item.Attributes["ConditionTitle"] != null)
                    {
                        ConditionTitle = item.Attributes["ConditionTitle"].Value;
                    }
                    model.ConditionTitle = ConditionTitle;
                    list.Add(model);
                }
            }
            XmlNode sqlNode = node.SelectSingleNode("SqlStatement");
            reportModel.MasterSqlStatement = sqlNode.InnerText;
            if (node.SelectSingleNode("Remark1") != null)
            {
                reportModel.Remark1 = node.SelectSingleNode("Remark1").Attributes["Text"].Value;
            }
            if (node.SelectSingleNode("Remark2") != null)
            {
                reportModel.Remark2 = node.SelectSingleNode("Remark2").Attributes["Text"].Value;
            }
            if (node.SelectSingleNode("Remark3") != null)
            {
                reportModel.Remark3 = node.SelectSingleNode("Remark3").Attributes["Text"].Value;
            }
        }
    }
    reportModel.ParamSettings = list;
    return reportModel;
}
<?xml version="1.0" encoding="utf-8" ?>
<ReportConfig>
  <Report ID="1" Title="The InKindItem Information">
    <Params>
      <ParamItem ParaType="DateRange" ParaTitle="饋贈日期" Para1Name="@StartDate" Para2Name="@EndDate"  Default1Value="-365" Default2Value="0" ConditionTitle="InKindItemDate"/>
    </Params>
    <SqlStatement>
      <![CDATA[
select *
from ProfileInKindItem
where InKindDate between @StartDate and @EndDate

        ]]>
    </SqlStatement>
  </Report>
</ReportConfig>

http://www.cnblogs.com/yukaizhao/archive/2011/07/19/csharp_xmldocument_access_xml.html

<?xml version="1.0" encoding="utf-8" ?>
<students>
  <!--我是一段注释文字-->
  <student name="张平">
    <courses>
      <course name="语文?">
        <teacherComment>
          <![CDATA[
        这里是语文老师的批注
        ]]>
        </teacherComment>
    </course>

      <course name="数学">
        <teacherComment>
          <![CDATA[
        这里是数学老师的批注
        ]]>
        </teacherComment>
      </course>
    </courses>
  </student>
</students>

1.如何使用XmlDocument读取Xml

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace XmlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string xmlFilePath = @"X:\about.net\example\XmlExample\1.xml";
            XmlDocument doc = new XmlDocument();
            doc.Load(xmlFilePath);

            //使用xpath表达式选择文档中所有的student子节点
            XmlNodeList studentNodeList = doc.SelectNodes("/students/student");
            if (studentNodeList != null)
            {
                foreach (XmlNode studentNode in studentNodeList)
                {
                    //通过Attributes获得属性名字为name的属性
                    string name = studentNode.Attributes["name"].Value;
                    Console.WriteLine("Student:" + name);

                    //通过SelectSingleNode方法获得当前节点下的courses子节点
                    XmlNode coursesNode = studentNode.SelectSingleNode("courses");

                    //通过ChildNodes属性获得courseNode的所有一级子节点
                    XmlNodeList courseNodeList = coursesNode.ChildNodes;
                    if (courseNodeList != null)
                    {
                        foreach (XmlNode courseNode in courseNodeList)
                        {
                            Console.Write("\t");
                            Console.Write(courseNode.Attributes["name"].Value);
                            Console.Write("老师评语");
                            //通过FirstNode属性可以获得课程节点的第一个子节点,LastNode可以获得最后一个子节点
                            XmlNode teacherCommentNode = courseNode.FirstChild;
                            //读取CData节点
                            XmlCDataSection cdata = (XmlCDataSection)teacherCommentNode.FirstChild;
                            Console.WriteLine(cdata.InnerText.Trim());
                        }
                    }
                }
            }

            Console.Write("\r\nPress any key to continue....");
            Console.Read();
        }
    }
}

2.如何通过XmlDocument编辑Xml

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace WriteXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xmlDoc = new XmlDocument();
            //创建Xml声明部分,即<?xml version="1.0" encoding="utf-8" ?>
            xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");

            //创建根节点
            XmlNode rootNode = xmlDoc.CreateElement("students");

            //创建student子节点
            XmlNode studentNode = xmlDoc.CreateElement("student");
            //创建一个属性
            XmlAttribute nameAttribute = xmlDoc.CreateAttribute("name");
            nameAttribute .Value = "张同学";
            //xml节点附件属性
            studentNode.Attributes.Append(nameAttribute);

            //创建courses子节点
            XmlNode coursesNode = xmlDoc.CreateElement("courses");
            XmlNode courseNode1 = xmlDoc.CreateElement("course");
            XmlAttribute courseNameAttr = xmlDoc.CreateAttribute("name");
            courseNameAttr.Value = "语文";
            courseNode1.Attributes.Append(courseNameAttr);
            XmlNode teacherCommentNode = xmlDoc.CreateElement("teacherComment");
            //创建Cdata块
            XmlCDataSection cdata = xmlDoc.CreateCDataSection("<font color=\"red\">这是语文老师的批注</font>");
            teacherCommentNode.AppendChild(cdata);
            courseNode1.AppendChild(teacherCommentNode);
            coursesNode.AppendChild(courseNode1);
            //附加子节点
            studentNode.AppendChild(coursesNode);

            rootNode.AppendChild(studentNode);
            //附加根节点
            xmlDoc.AppendChild(rootNode);

            //保存Xml文档
            xmlDoc.Save(@"d:\test.xml");

            Console.WriteLine("已保存Xml文档");

        }
    }
}
时间: 2024-10-13 00:32:40

通过XmlDocument读写Xml文档参考地址的相关文章

.Net那点事儿系列:C#操作Xml:通过XmlDocument读写Xml文档

什么是Xml? Xml是扩展标记语言的简写,是一种开发的文本格式.关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210.如果你不知道它,那你就out太多了. .Net处理Xml相关随笔 1.通过XmlDocument读写Xml文档2.通过XmlWriter和XmlReader读写Xml文档3.通过LINK to Xml存取XML4.通过XmlScheme定义固定格式xml文档5.Xml序列化或者反序列化类6.通过XPath查找X

C#操作Xml:通过XmlDocument读写Xml文档

什么是Xml? Xml是扩展标记语言的简写,是一种开发的文本格式.关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210.如果你不知道它,那你就out太多了. .Net是如何处理Xml的? 1.通过XmlDocument读写Xml文档 2.使用XmlReader读Xml,使用XmlWriter写Xml 3.使用Linq to xml存取XML 4.通过XmlScheme定义固定格式xml文档 5.Xml序列化或者反序列化类 6.通

python+selenium自动化软件测试(第12章):Python读写XML文档

XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>Python对XML文档读写常用有几个模块: (1) xml.etree.ElementTree ElementTree就像一个轻量级的DOM,具有方便友好的A

C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例

XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件 如下代码示例: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="

四种生成和解析XML文档的方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 一.介绍及优缺点分析 1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的. [优点]      ①允许应用

文档对象模型操作xml文档

简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规范化接口.DOM是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口,它以树状结构表示HTML和XML文档,定义了遍历这个树和检查.修改树的节点的方法和属性. DOM的核心API还允许你创建和填充文件.加载文档并保存. 2.2DOM实现 微软的net框架在Systemx.x

艺多不压身 -- 四种生成和解析XML文档的方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX: JDOM: DOM4J: 一.介绍及优缺点分析 1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然

【Win 10应用开发】把文件嵌入到XML文档

把文件内容嵌入(或存入)到XML文档中,相信很多朋友会想到把字节数组转化为Base64字符串,再作为XML文档的节点.不过,有人会说了,转化后的base64字符串中含有像“+”这样的符号,写入到XML文档中会发生解析错误. 不知你是否想起XML文档有一种CData内容节点,它可以忽略对字符的解析处理,使用CData节点,可以存放base64字符串. 要在Win App中实现这种处理也不难. 读写XML文档有多种方法,既可以使用.net core中的类,也可以用Linq to XML,还可以用运行

XML文档的创建

右键项目,添加,新建项,XML文件 XML文件的第一行有一个标题,标题描述了这个XML文件的版本和编码 XML文件必须有根节点且只能有一个根节点,如<Books></Books>, (XML严格区分大小写) 在根节点下可以有多本书,及多个<book></book>--<book></book>,在<book>节点下可以有<name></name>,<price></price>