您好,欢迎访问三七文档
Java读取XML1.XML简介XML:eXtensibleMarkupLanguage可扩展的标记语言描述事物本身(可扩展)XSL:展现事物表现形式DTD:规定事物的规律![CDATA[]]:保留XML里面特殊的格式(区中不能出现”]]”标志,需要用]]>代替)注意:大小写区分,顶层元素只能有一个,元素不能以xml开头,且不能有空格2.基本语法PIProcessInstruction?xml-stylesheethref=”typical.css”type=”text/css”??xml-stylesheethref=”typical.xml”type=”text/xsl”?Namespace:来源于哪个空间Xmlns=””Xmlns:X=””X:criminalX:name/X:name/x:criminal><&&“"‘&aposSAX是一种基于事件驱动的API。SAX允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航1.DOM方法importjavax.xml.parsers.*;//XML解析器接口importorg.w3c.dom.*;//XML的DOM实现importorg.apache.crimson.tree.XmlDocument;//写XML文件要用到privatevoidinit(StringxmlFile)throwsException{//很明显该类是一个单例,先获取产生DocumentBuilder工厂//的工厂,在通过这个工厂产生一个DocumentBuilder,//DocumentBuilder就是用来产生Document的DocumentBuilderFactorybdf=DocumentBuilderFactory.newInstance();//允许名字空间bdf.setNamespaceAware(true);//允许验证bdf.setValidating(true);DocumentBuilderdb=bdf.newDocumentBuilder();doc=db.parse(newFile(xmlFile));//获得根节点StuInfoElementelmtStuInfo=doc.getDocumentElement();//得到所有student节点NodeListnlStudent=elmtStuInfo.getElementsByTagNameNS(strNamespace,student);for(……){//当前student节点元素ElementelmtStudent=(Element)nlStudent.item(i);NodeListnlCurrent=elmtStudent.getElementsByTagNameNS(strNamespace,name);}对于读取得方法其实是很简单的,写入xml文件也是一样不复杂。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=null;try{builder=factory.newDocumentBuilder();}catch(ParserConfigurationExceptionpce){System.err.println(pce);System.exit(1);}Documentdoc=null;doc=builder.newDocument();//下面是建立XML文档内容的过程,//先建立根元素学生花名册Elementroot=doc.createElement(学生花名册);//根元素添加上文档doc.appendChild(root);//建立学生元素,添加到根元素Elementstudent=doc.createElement(学生);student.setAttribute(性别,studentBean.getSex());root.appendChild(student);//建立姓名元素,添加到学生下面,下同Elementname=doc.createElement(姓名);student.appendChild(name);设值TexttName=doc.createTextNode(studentBean.getName());name.appendChild(tName);Elementage=doc.createElement(年龄);student.appendChild(age);TexttAge=doc.createTextNode(String.valueOf(studentBean.getAge()));age.appendChild(tAge);}JDOMJDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用SAXBuilderbuilder=newSAXBuilder();Documentdoc=builder.build(newFile(”data_10k.xml”));Elementfoo=doc.getRootElement();ListallChildren=foo.getChildren();dom4j读写xml文件首先我们给出一段示例程序:importjava.io.File;importjava.io.FileWriter;importjava.util.Iterator;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.SAXReader;importorg.dom4j.io.XMLWriter;publicclassDOM4JTest{/***//***//***//***DOM4J读写XML示例**@paramargs*@throwsException*/publicstaticvoidmain(String[]args){try{XMLWriterwriter=null;//声明写XML的对象SAXReaderreader=newSAXReader();OutputFormatformat=OutputFormat.createPrettyPrint();format.setEncoding(GBK);//设置XML文件的编码格式StringfilePath=d:\\student.xml;Filefile=newFile(filePath);if(file.exists()){Documentdocument=reader.read(file);//读取XML文件Elementroot=document.getRootElement();//得到根节点booleanbl=false;for(Iteratori=root.elementIterator(学生);i.hasNext();){Elementstudent=(Element)i.next();if(student.attributeValue(sid).equals(001)){//修改学生sid=001的学生信息student.selectSingleNode(姓名).setText(王五);student.selectSingleNode(年龄).setText(25);//输出writer=newXMLWriter(newFileWriter(filePath),format);writer.write(document);writer.close();bl=true;break;}}if(bl){//添加一个学生信息Elementstudent=root.addElement(学生);student.addAttribute(sid,100);Elementsid=student.addElement(编号);sid.setText(100);Elementname=student.addElement(姓名);name.setText(嘎嘎);Elementsex=student.addElement(性别);sex.setText(男);Elementage=student.addElement(年龄);age.setText(21);writer=newXMLWriter(newFileWriter(filePath),format);writer.write(document);writer.close();}}else{//新建student.xml文件并新增内容Document_document=DocumentHelper.createDocument();Element_root=_document.addElement(学生信息);Element_student=_root.addElement(学生);_student.addAttribute(sid,001);Element_id=_student.addElement(编号);_id.setText(001);Element_name=_student.addElement(姓名);_name.setText(灰机);Element_age=_student.addElement(年龄);_age.setText(18);writer=newXMLWriter(newFileWriter(file),format);writer.write(_document);writer.close();}System.out.println(操作结束!);}catch(Exceptione){e.printStackTrace();}}}执行结果应该是这样:命名空间xml代码example:reportxmlns==3.2.15id=1list-propertyname=cssStyleSheetsstructurepropertyname=fileNameD:eport.css/property/structure/list-property/report第一个方案.设置你的xpath的命名空间setNamespaceURIspublicc
本文标题:XML文件
链接地址:https://www.777doc.com/doc-2868161 .html