作者: littleboy 2024-03-13 16:00:13

XML:可扩展标记语言(eXtensible Markup Language)

XML 实例

1
2
3
4
5
6
7
8
<!--  声明:版本和编码  -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根元素标签:只能有一个 -->
<root>
<子元素名 属性名1=”属性值1”(空格)属性名2=”属性值2”>子元素</元素名>
<name lang=”ch”>林家小弟</name>
<url>https://www.runoob.com</url>
</root >

XML 实例关系图:

1
2
3
4
5
6
<bookstore>
<book category=””>
<title lang=”CN”>Harry Potter</title >
<author>J K.Rowing</author>
<year>2005</year>
<price>29.99</price>

XML 语法规则

XML 文档必须有根元素

XML 元素都必须有一个关闭标签

XML 标签对大小写敏感

XML
必须正确嵌套(例如:**<b><i></b></i><b><i></i></b>**)

XML 属性值必须加引号(例如:<note date="12/11/2007">)

XML 特殊字符(如下表):

md 字符 显示字符
&lt <
&gt >
&amp &
&apos '
&quot "

XML 中的注释:<!-- 注释格式 -->

XML 中空格会被保留(而 HTML 会把多个连续的空格字符裁减(合并)为一个)

XML 以 LF 存储换行(一般 Windows 的换行:回车符(CR)和换行符(LF))

XML 命名规则:

XML 元素必须遵循以下命名规则:

>名称可以含字母、数字以及其他的字符

>名称不能以数字或者标点符号开始

>名称不能以字符”xml”(或者 XML、Xml) 开始

>名称不能包含空格

>可使用任何名称,没有保留的字词。

System.Xml 示例

获得 XML 对象

1
2
3
//获得xml文件对象,
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\WINDOWS\Temp\XMLfile.xml);
1
2
3
//获取xml文件根元素+子元素列表
XmlElement element_root = doc.DocumentElement;
XmlNodeList node_lists = element_root.GetElementsByTagName(Element_name);

读取元素指定的属性值

1
2
3
4
5
6
7
8
//遍历元素列表
foreach (XmlElement element in node_lists)
{
//元素名+元素值
Console.WriteLine(element.Name + element.Value);
//属性值
Console.WriteLine(element.GetAttribute(\"name\"));
}

举例增加指定元素和属性

举例删除指定元素

1
2
3
4
5
//遍历元素列表
for (int i = node_lists.Count - 1; i \>= 0; i\--)
{
node_lists\[i\].ParentNode.RemoveChild(node_lists\[i\]);
}

Q&A:

未声明的前缀

A:声明是用来区分元素(例如:<sldcolorswatch:Optical/>,里面的冒号前缀是作为声明,未声明前缀就是 sldcolorswatch)

数据读XML失败

解答:可能是本机系统.netFramework底层的XML解析器工作异常,导致所有的XML文件无法解析,比如标准件库无法打开,属性卡无法存储设置等。

修复方法:在开始菜单中找到运行,输入CMD,打开命令窗口,分两次输入下面的命令按回车:
regsvr32 msxml3.dll
regsvr32 msxml4.dll
成功后会有相应的提示的。建议再重启一下PC,检查系统更新。