xml 学习1
一只纯菜鸟的角度....持续更新中。一如既往,求指教,求更正。 以前配置不少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文件 <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstudentsSYSTEM"Students.dtd"> <studentsstudentsid="1"namefirst_name>"ss"</second_name>"ssx"sexvalue="男"/> age>45birthdayyear>1899month>12day>4addresscity="北京"relationaltype="tel">hhssssdrelationalstudent> ---------------------解析文件 publicclassDomDemo{ staticvoidmain(String[]args){ //获得xml文件 FilexmlFile=newFile( "F:SHHXMLsrccnbltest1Untitled2.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好像入门了,又好像一无所知。持续努力中.......待续 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |