加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML

发布时间:2020-12-16 00:13:41 所属栏目:百科 来源:网络整理
导读:?? XML的文档描述 ?xml version="1.0" encoding="utf-8" 每一个XML文档必须有,并且只能有一个跟节点(xml大小写敏感) 标签一般成对存在,例如:a/a等,但是如果标签没有子数据可以写成封闭的 例如a / XML的存储结构有以下两种 标签名值/标签名 标签名 属性
??

XML的文档描述
<?xml version="1.0" encoding="utf-8">

每一个XML文档必须有,并且只能有一个跟节点(xml大小写敏感)

标签一般成对存在,例如:<a></a>等,但是如果标签没有子数据可以写成封闭的 例如<a />

XML的存储结构有以下两种
<标签名>值</标签名>
<标签名 属性="值" 属性2="值"/>


例如:
<person name="张三" age="25" Gender="1"/>

========================================

xml使用 <!--这是注释内容--> 进行注释

<?xml version="1.0" encoding="utf-8"?>
<studetn>
	<stuinfo id="001">
		<name>张三</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
	<stuinfo id="002">
		<name>李四</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
	<stuinfo id="003">
		<name>王五</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
</studetn>

xml 的另外一种注释:<![CDATA[..........]]>

<news>
	<title>标题</title>
	<content><a href="http://www.baidu.com">今天的头条新闻</a></content> 
	
	<!--问题来了,我这个content标签里面只是想放一个超链接作为内容,可是我这个超链接是一个<a></a>这样的成对出现的,xml会把它识别成一个节点,那我不像让这个a标签变成一个节点,仅仅是把他当成内容,怎么办呢?-->
</news>

请看下面的这种注释方式:<![CDATA[..........]]>

<?xml version="1.0" encoding="gb2312"?>
<news>
<title>标题</title>
<content><![CDATA[<a href="http://www.baidu.com">今天的头条新闻</a>]]></content> 
</news>


用C#语句创建一个XML文档

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace xml
{
    class Program
    {
        /// <summary>
        /// 创建一个XML文档
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //命名空间:System.Xml;
            //类库:   XmlDocument  文档
            //         XmlElement   元素
            //         XmlAttribute 属性
            //         XmlText      内容
            XmlDocument xdoc = new XmlDocument();  //表示 XML 文档。

            //所有的元素使用文档节点创建
            XmlDeclaration xdec = xdoc.CreateXmlDeclaration("1.0","gb2312",null);
            xdoc.AppendChild(xdec); //将指定的节点添加到该节点的子节点列表的末尾。

            XmlElement xele = xdoc.CreateElement("root");
            xdoc.AppendChild(xele); //将指定的节点添加到该节点的子节点列表的末尾。

            XmlAttribute xAttr = xdoc.CreateAttribute("id");
            xAttr.Value = "101"; //获取或设置节点的值。

            XmlText txt = xdoc.CreateTextNode("我是一个文本节点");
            xele.AppendChild(txt); //将指定的节点添加到该节点的子节点列表的末尾。

            xele.Attributes.Append(xAttr); //将指定的特性插入集合,并将其作为集合中的最后一个节点。

            xdoc.Save("D:/XML.XML");

        }
    }
}


创建好的XML文档内容:


查到节点: 例如在我的E盘下有一个xml.xml的文件,我要根据某个值获取它的父节点

<?xml version="1.0" encoding="utf-8"?>
<studetn>
	<stuinfo id="001">
		<name>张三</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
	<stuinfo id="002">
		<name>李四</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
	<stuinfo id="003">
		<name>王五</name>
		<age>25</age>
		<Gender>1</Gender>
	</stuinfo>
</studetn>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace ReadXml
{
    class Program
    {
        /// <summary>
        /// 根据一个内容的值,来查找父节点(获取父节点的所有内容)
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
           XDocument xdoc=  XDocument.Load("e:/xml.xml");//从某个文件中去加载xml文档

            //将查到到的内容放到XElement中,所以我们建立一个XElement的泛型集合,因为我们查找到的节点可能有多个
           List<XElement> list = new List<XElement>();

           SearchElements(xdoc.Root,list);

        }

        public static void SearchElements(XElement ele,List<XElement> list)
        {
            //首先遍历ele的所有子节点
            foreach (XElement item in ele.Elements()) //Elements()表示ele这个节点的所有子节点.即:子元素集合。
            { 
                //判断这个元素的名字是否为name,如果name里存的值是“张三”
                if (item.Name.LocalName == "name")
                {
                    if (item.Value == "张三")
                    {
                        list.Add(item.Parent);//将"张三"这个节点的负节点添加到list中去
                    }
                }

                //如果item里面还有子节点就递归(关于递归可以参考asp.net文章中的<a target=_blank href="http://blog.csdn.net/fanbin168/article/details/45623263" target="_blank">TreeView 树菜单 节点</a><span class="gray"></span>)
                SearchElements(item,list);
            }
        }
    }
}





??
??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读