一只纯菜鸟的角度....持续更新中。一如既往,求指教,求更正。
以前配置不少xml文件,比如:servlet中的web.xml(用来管理jsp中的动作和其对应的servlet);Structs中的strcuts-config.xml(关联表单和对应的action);Hibernate中的hibernate.cfg,xml(简单封装数据库连接;配置数据库中的表和实体类的对应),xx.hbm.xml(配置表和实体映射的关系)。一直把xml当成个“打酱油”的角色在用,直到最近专门学习xml,才知道xml其实也能逆袭。
XML简介:
百度百科说了一大篇,专业名称也说了不少,作为计算机专业的我yy地总结下:
Xml就是一种自己写的文档,只要符合一定的规范,就能在不同平台,不同软件间交换数据。
关于xml的解析:
为什么要解析?怎么解析?等研究后再写,先弄个简单实例入入门
趋势:
从发展趋势上讲json有边缘化xml的迹象,具体原因我也清楚,没有实践就没有发言权。大家可以赐教啊,老是我一个人独白.....
XML的一个超超简单实例:写了xml,并用dom进行解析.
本例在xml中存放个student信息,让后通过两种解析方式将学生信息打印在控制台。
这里我使用了外部DTD文档,先看看具体要求
1:根元素为students,下面至少有一个student
2:student有必须的sid属性为主键,有可以省略的markup属性。引用sid的值
3:student下有name,sex,age,birthday,address,relational元素
4:name可以有first_name与second_name元素
5:sex有value属性,只能是男或女
6:birthday有year,month,day子元素
7:address可以出现多次,有属性city,默认为changsha
8:relational有type属性,固定为tel
------------------------DTD文件
<?xmlversion="1.0"encoding="UTF-8"?>
<!ELEMENTENTER_NAME_OF_ROOT_ELEMENT_HEREEMPTYstudents(student)+student(name,sexagebirthdayaddress+,95)">relational)name(first_name*,95)">second_name*)birthday(yearmonthday)>
first_name(#PCDATA)second_namesexageyearmonthdayaddressrelational<!ATTLISTstudentsidCDATA#requiredsexvalue(男|女)"男"addresscityCDATA"长沙"relationaltype#FIXED"tel">
------------------------------xml文件
<?xml@H_828_404@version="1.0"@H_828_404@encoding="UTF-8"?>
<!DOCTYPEstudentsSYSTEM"Students.dtd">
<studentsstudent@H_828_404@sid="1"namefirst_name>"ss"</second_name>"ssx"sex@H_828_404@value="男"/>
age>45birthdayyear>1899month>12day>4address@H_828_404@city="北京"relational@H_828_404@type="tel">hhssssdrelationalstudent>
---------------------解析文件
publicclassDomDemo{
staticvoidmain(String[]args){
//获得xml文件
FilexmlFile=newFile(
"F:\\SHH\\XML\\src\\cn\\bl\\test1\\Untitled2.xml");
//相对路径不行啊FilexmlFile=newFile("studens.xml");
//声明一个DocumentBuilder对象
DocumentBuilderbuilder=null;
//声明一个DocumnetBuilderFactory,并用单例模式创建
DocumentBuilderFactorybuilderFactory=DocumentBuilderFactory
.newInstance();
try{
builder=builderFactory.newDocumentBuilder();//获得默认的DocumnetBuilder
Documentdocument=builder.parse(xmlFile);//解析文件
Elementroot=document.getDocumentElement();//获得根元素
System.out.println("根元素:"+root.getNodeName());
NodeListchildNodes=root.getChildNodes();
//获得子节点
for(inti=0;i<childNodes.getLength();i++){
Nodenode=childNodes.item(i);
System.out.println(node.getTextContent().trim());
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
---------运行结果
根元素:students
"ss""ssx"451899124hhssssd
对xml好像入门了,又好像一无所知。持续努力中.......待续