2.VS编写XML实例程序

在VS中编写XML实例程序

1、如下,在 VS 中分别新建  XML 文件、XML 解析类、XML 实体类

2、在项目中代码,如下

(1)XML 文件(注:在 VS 解决方案资源管理器中选中 XML 文件,点击属性将【复制到输出目录】中的“不复制”改为“如果较新则更新”)

<ProjectDialogsInfo>                                        
  <Dialog language="CN">
    <Speak>英雄</Speak>
    <Content>这是哪里?</Content>
  </Dialog>

  <Dialog language="CN">
    <Speak>NPC</Speak>
    <Content>你好,欢迎来到亚特兰蒂斯地下城!</Content>
  </Dialog>

  <Dialog language="CN">
    <Speak>英雄</Speak>
    <Content>你好,我是XML演示文件!</Content>
  </Dialog>
</ProjectDialogsInfo>

 

(2)XML 实体类

/***
 * 
 *  实体类:对话信息 
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XMLDemo1
{
    class Dialogs
    {
        //语言
        public string Language { set; get; }
        //编号
        public int Number { set; get; }
        //说话人
        public string Speaker { set; get; }
        //对话内容
        public string SpeakContent { set; get; }
    }//class_end
}

 

(3)XML 解析程序

/***
 * 
 *  XML 解析程序
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Xml;                                           //XML 命名空间
using System.IO;                                            //文件输入输出流

namespace XMLDemo1
{
    class XMLAnalysis
    {
        List<Dialogs> _LiDialogsArray;                      //存放集合

        public XMLAnalysis()
        {
            _LiDialogsArray = new List<Dialogs>();
        }

        /// <summary>
        /// 解析XML
        /// </summary>
        public void AnalysisXML()
        {
            //XmlDocument:C#内置的XML解析方式
            XmlDocument doc = new XmlDocument();
            //加载 XML 文件
            doc.Load("XMLFile1.xml");
            //得到 XML 文件根节点
            XmlNode node = doc.FirstChild;
            //得到根节点后的节点集合
            XmlNodeList nodeArray = node.ChildNodes;

            foreach (XmlNode nodeItem in nodeArray)
            {
                //实例化实体类
                Dialogs diaObj = new Dialogs();
                //得到属性信息(Attributes:包含节点属性)
                diaObj.Language = nodeItem.Attributes[0].InnerText;
                //字符串num、Speaker、Content对应XML文件中的标签
                diaObj.Number = Convert.ToInt32(nodeItem["num"].InnerText);
                diaObj.Speaker = nodeItem["Speaker"].InnerText;
                diaObj.SpeakContent = nodeItem["Content"].InnerText;
                //把单个实体对象加入集合
                _LiDialogsArray.Add(diaObj);
            }
        }

        /// <summary>
        /// 查看XML内容(需要先解析)
        /// </summary>
        public void DisplayXMLContent()
        {
            Console.WriteLine("显示XML如下内容:");
            if (_LiDialogsArray!=null)
            {
                foreach (Dialogs diaItem in _LiDialogsArray)
                {
                    Console.WriteLine("语言:"+diaItem.Language);
                    Console.WriteLine("编号:" + diaItem.Number);
                    Console.WriteLine("说话人:" + diaItem.Speaker);
                    Console.WriteLine("对话内容:" + diaItem.SpeakContent);
                }
            }
        }
        static void Main(string[] args)
        {
            XMLAnalysis obj = new XMLAnalysis();
            //解析 XML
            obj.AnalysisXML();
            //显示 XML 内容
            obj.DisplayXMLContent();
        }
    }//class_end
}

 

posted @ 2018-07-04 21:26  LiuChangwei  阅读(2829)  评论(0编辑  收藏  举报