可扩展标记语言XML(淅淅沥沥的小雨)
XML简述
XML用于描述数据,是当前处理结构化文档信息的有力工具。与操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交互。
xml文件结构:
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <people>
3 <Name>姓名</Name>
4 <Sex>性别</Sex>
5 </people>
代码中第一行是XML声明,它一般在XML文档的第一行。它由两个部分组成:
version:文档符合XML1.0规范。
encoding:文档字符编码,默认为“UTF-8”。
<!--注释-->为注释语法。
XML语言有3个特点:
1.XML中的每对标记通常被称为节点,他们是成对出现而且必须成对出现的,用来描述这个节点存储的内容。在节点中存储该节点的信息。
2.XML中用于描述数据的各个节点可以自由横向扩展和纵向扩展,即可以向下扩展也可以向内扩展(嵌套)。
3.XML文件中的节点严格区分大小写。例:<Name>名字</Name>和<name>名字</name>这两个节点内容相同,但节点名称不一样,即是两个节点。
在C#中操作XML文件
在C#中操作并解析XML文件分为6个步骤:

1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.Xml; //1.引入命名空间
7
8 namespace Demo
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 XmlDocument doc = new XmlDocument(); //2.创建XML文件对象
15 doc.Load("Path.xml"); //3.从指定路径读取整个XML文件的结构
16 XmlNode nodes = doc.DocumentElement; //4.获取XML文件的根节点
17 foreach (XmlNode node in nodes.ChildNodes) //5.遍历根节点的子节点
18 {
19 string name = node["name"].InnerText; //6.获取XML文件节点中的内容
20 string sex = node["sex"].InnerText;
21 Console.WriteLine("姓名:{0},性别:{1}", name, sex);
22 }
23 }
24 }
25 }

XmlDocument对象:
表示整个XML文档,它使用Load方法将指定的XML文件读入XmlDocument对象,Load方法的参数是XML文档的路径。
DocumentElement属性用于获取根节点。
XmlNode对象:
XmlNode对象表示一个XML中的节点。
ChildNodes属性用来获取指定节点的所有子节点。
Name属性可以获取当前节点的名称。 例:<name>名字</name>获取name。
Inner Text属性用来获取当前节点的值。 例:<name>名字</name>获取名字。
Attributes属性可以获取当前节点的特性。 例:<name type="dog">名字</name> Attributes["type"]获取dog。
注意:ChildNodes属性表示当前节点的所有子节点,这里的所有子节点表示的是当前子节点的集合。
XML解析
XML文件除了给开发者看,更多的情况使用程序读取xml文件的内容。这叫做xml解析
XML解析方式(原理不同)
DOM解析
SAX解析
XML解析工具
DOM解析原理:
1)JAXP (oracle-Sun公司官方)
2)JDOM工具(非官方)
3)Dom4J工具(非官方)
三大框架(默认读取xml的工具就是Dom4j)
.......
SAX解析原理:1)Sax解析工具(oracle-sun公司官方
什么是DOM解析
DOM解析原理:xml解析器一次性把整个xml文档加载进内存,
然后在内存中构建一颗Document的对象树,通过Document对象,
得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。
Dom4j工具
非官方,不在jdk中。
使用步骤:
1)导入dom4j的核心包。 dom4j-1.6.1.jar
2)编写Dom4j读取xml文件代码
* 示例
/**
* 第一个Dom4j读取xml文档的例子
* @author APPle
*
*/
public class Demo1 {
public static void main(String[] args) {
try {
//1.创建一个xml解析器对象
SAXReader reader = new SAXReader();
//2.读取xml文档,返回Document对象
Document doc = reader.read(new File("./src/contact.xml"));
System.out.println(doc);
} catch (DocumentException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
Domj4读取xml文件
- 节点:
Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点- 案列:
/**
* 得到节点信息
*/
@Test
public void test1() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
//2.nodeIterator: 得到当前节点下的所有子节点对象(不包含孙以下的节点)
Iterator<Node> it = doc.nodeIterator();
while(it.hasNext()){//判断是否有下一个元素
Node node = it.next();//取出元素
//继续取出其下面的子节点
//只有标签节点才有子节点
//判断当前节点是否是标签节点
if(node instanceof Element){
Element elem = (Element)node;
Iterator<Node> it2 = elem.nodeIterator();
while(it2.hasNext()){
Node n2 = it2.next();
System.out.println(n2.getName());
}
}
}
} 案例2:得到xml所有节点(使用递归)
/**
* 遍历xml文档的所有节点
* @throws Exception
*/
@Test
public void test2() throws Exception{
//1.读取xml文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
//得到根标签
Element rooElem = doc.getRootElement();
getChildNodes(rooElem);
} /**
* 获取 传入的标签下的所有子节点
* @param elem
*/
private void getChildNodes(Element elem){
System.out.println(elem.getName());
//得到子节点
Iterator<Node> it = elem.nodeIterator();
while(it.hasNext()){
Node node = it.next();
//1.判断是否是标签节点
if(node instanceof Element){
Element el = (Element)node;
//递归
getChildNodes(el);
}
};
}
- 案列:
可扩展标记语言XML(淅淅沥沥的小雨)的更多相关文章
- 可扩展标记语言XML之二:XML语言格式规范、文档组成
大家好,小乐又来了,好久不见!这次接着上次可扩展标记语言XML之一:XML概念,作用,示例,继续讲述XML. 一.格式良好的 xml 1.语法规范: 1).必须有 XML 文档声明: <?xml ...
- 可扩展标记语言XML之一:XML的概念、作用与示例
哈喽大家好啊,乐字节小乐又来给大家分享Java技术文章了.上次已经讲完了Java多线程相关知识(可以看我博客文章), 这次文章将讲述可扩展标记语言XML 一. 标记语言 标记语言,是一种将文本(Tex ...
- 可扩展标记语言XML
XML简述 XML用于描述数据,是当前处理结构化文档信息的有力工具.与操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交互. 结构 <?xml version="1.0&qu ...
- XML 概述 (可扩展标记语言)
XML:eXtensible Markup Language 可扩展标记语言 概念:可扩展:xml中所有的标签都是自定义的.没有预定义的. 功能: 存储数据 ...
- 关于XML(可扩展标记语言)的基础知识与写法------2017-05-18
XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示 XML:可扩展标记语言,用来做数据传输XML特点: 1.树状结构,有且只有一个根 2.标签名 ...
- 关于XML(可扩展标记语言)的基础知识与写法
XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示 XML:可扩展标记语言,用来做数据传输XML特点:1.树状结构,有且只有一个根2.标签名自定 ...
- java XML(可扩展标记语言)
XML 是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言,传输数据而不是显示数据,可以自定义标签,具有自我描述性是一种通用的数据交换格 ...
- XML简介——可扩展标记语言(Extensible Markup Language)
(What) XML是什么? XML指可扩展标记语言(Extensible Markup Language) 1. XML是一种标记语言,类似HTML. 2. XML具有自我描述性 3. XML ...
- 标记语言XML
标记语言概述 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.一部分是标记,一部分是标记中的内容,两部分构成标记语言 <标记 ...
随机推荐
- [bzoj1101]Zap
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 50001 4 int t,n,m,k,ans,mu[N],vis ...
- [loj3503]滚榜
一个小问题:题意中关于$b_{i}$的顺序只需要单调不降即可,相同时可任意选择 考虑$i$优于$j$的条件,即$val_{i}\ge val_{j}+[i>j]$,并记$del_{i,j}=\m ...
- [luogu4331]数字序列
令$a'_{i}=a_{i}+n-i$.$b'_{i}=b_{i}+n-i$,代价仍然是$\sum_{i=1}^{n}|a'_{i}-b'_{i}|$,但条件变为了$b'_{i}\le b'_{i+1 ...
- docker创建mongodb并且测试代码
mongodb docker 安装mongodb-创建用户 docker run -itd --name mongo -p 27017:27017 mongo --auth 进入数据库添加密码 ...
- 明明pip安装python的模块了,pycharm还是找不到的解决方案
以前pycharm的安装包和python的环境一直都不能融合在一起,到了今天才知道,原来他们都是有自己的工作环境的 自己的工作环境(虚拟解释器)和安装python的工作环境(基本解释器)不是一个环境, ...
- SpringSecurity 小demo
SpringSecurity 首先搭建好springboot工程,然后引入springsecurity依赖. <dependency> <groupId>org.springf ...
- P4497 [WC2011]拼点游戏
P4497 [WC2011]拼点游戏 在我的 cnblogs 中查看 数据结构大杂烩 + 阿巴细节题. 调了三个小时. 首先考虑第一小问的答案. 注意到点数的计算方式是先负后正的形式,不妨看做选出 \ ...
- python8 标准模块和第三方模块
- vector初始化的几种方式-STL
vector<int>::iterator int_ite; vector<string>::iterator string_ite; //vector<T> ...
- 【模板】二分图最大权完美匹配(KM算法)/洛谷P6577
题目链接 https://www.luogu.com.cn/problem/P6577 题目大意 给定一个二分图,其左右点的个数各为 \(n\),带权边数为 \(m\),保证存在完美匹配. 求一种完美 ...