可扩展标记语言XML()

可扩展标记语言标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
xml文件一般用作配置文件,存储一些固定的信息,模拟一个小型数据库;
xml文件的约束文件:xsd文件(Xsd security team),dtd文件(Document Type Definition),xml schema文件()
xml文件的解析:和html文件的解析类似,浏览器自带html文件解析器;xml文件的解析目的将配置的数据信息解析出来封装成对象,供程序调用
格式良好的xml文件
1)只有一个根标签
2)开始标签和结束标签对应


       解析xml文件:DOM解析,Sax解析
1)DOM解析(将整个文档装在进内存,封装成对象)

  整个文档叫做Document对象,Node节点,Element元素

   xml文件的解析: 将xml文件中的数据取出来,封装程序可用的对象

2)Sax解析(simple API for XML)

是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,

但任何事物都有其相反的一面,对于SAX来说就是操作复杂。

例子:xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Students>
<Student>
<id>001</id>
<name>李刚</name>
<age>29</age>
</Student>
<Student>
<id>002</id>
<name>王强</name>
<age>22</age>
</Student>
<Student>
<id>003</id>
<name>张权</name>
<age>33</age>
</Student>
</Students>

解析xml文件:

package Test3;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class XmlDemo {
public static void main(String[] args) throws Exception {
//1,获取文件解析工厂
DocumentBuilderFactory dby = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dby.newDocumentBuilder();
Document dt = db.parse("NewFile.xml");

//2,解析文件
Element element = dt.getDocumentElement();
String nodeName = element.getNodeName();
Test.println(nodeName);

//3,获取节点下面的子元素--获取students节点下面的元素

NodeList nodeList = element.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node item = nodeList.item(i);
String name = item.getNodeName();
Test.println(name);
if ("#text".equals(name)) {
continue;
}
NamedNodeMap map = item.getAttributes();
for (int j = 0; j < map.getLength(); j++) {
Node node = map.item(j);
String name2 = node.getNodeName();
String value = node.getNodeValue();
Test.println(name2+""+value);

}
NodeList nodes = item.getChildNodes();
for (int j = 0; j <nodes.getLength(); j++) {
Node item2 = nodes.item(j);
Test.println(item2.getNodeName()+"");
if ("#text".equals(item2.getNodeName())) {
continue;
}
String content = item2.getTextContent();
Test.println(content);
}
System.out.println();

}
}


}

测试Bug文件:

package Test3;


public class Test {
private static boolean isBug=true;


public static boolean isBug() {
return isBug;
}


public static void setBug(boolean isBug) {
Test.isBug = isBug;
}

public static void print(String Str){
if (isBug) {
System.out.print(Str);
}
}
public static void println(String Str){
if (isBug) {
System.out.println(Str);
}
}


}



    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值