java如何读取xml文件|java如何读取XML配置文件

① 如何读取xml文件解析 java

xml解析还是用dom4j方便,importjava.util.List;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;publicclassXMLPaser{publicstaticvoidmain(String[]args){paserXML();}publicstaticvoidpaserXML(){SAXReaderreader=newSAXReader();try{//读取XML文件Documentdoc=reader.read("NewFile.xml");Elementroot=doc.getRootElement();System.out.println(root.getName());List<Element>param=root.elements();for(Elementelement:param){if(element.attributeValue("name").equals("a")){System.out.println(element.getText());}}}catch(DocumentExceptione){e.printStackTrace();}}}我有一个微信公众号,每天都会分享一些Java相关的干货文章,还有一些学习资源。如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。

② JAVA技术:XML配置文件的读取处理

Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了?当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式。(Java中也有Propertiesy这样的类专门处理这样的属性配置文件)。使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2ee的配置文件中,我们已经看到XML的普遍应用,让我们也跟随流行趋旦饥势用XML武装起来。现在关键是如何读取XML配置模余返文件?有好几种XML解析器:主要有DOM和SAX ,这些区别网上文章介绍很多。在apache的XML项目组中,目前有Xerces Xalan Cocoon几个开毁让发XML相关技术的project.Tomcat本身使用的是 Sun 的 JAXP,而其XSL Taglib project中使用Xerces解析器。好了,上面都是比较烦人的理论问题,还是赶快切入XML的配置文件的读取吧。在我们的程序中,通常要有一些根据主机环境确定的变量。比如数据库访问用户名和密码,不同的主机可能设置不一样。只要更改XML配置文件,就可以正常运行。localhostsqlnameusernamepassword上面这个myenv.xml配置文件一般是放在tomcat的WEB-INF/classes目录下。我们编制一个Java程序直接读取,将dbhost dbuser dbpassword提取出来供其他程序访问数据库用。目前使用SAX比较的多,与DOM主要区别是 SAX是一行一行读取XML文件进行分析,适合比较大文件,DOM是一次性读入内存,显然不能对付大文件。这里我们使用SAX解析,由于SAX解析器不断在发展,网上有不少文章是针对老版本的。如果你使用JDK1.4 ,可以参考 使用SAX处理XML文档 一文。这里的程序是根据其改进并且经过实践调试得来的。对上面myenv.xml读取的Java程序:import org.xml.sax.Attributes;import org.xml.sax.helpers.DefaultHandler;import org.xml.sax.SAXException;import java.util.Properties;//使用DefaultHandler的好处 是 不必陈列出所有方法,public class ConfigParser extends DefaultHandler {////定义一个Properties 用来存放 dbhost dbuser dbpassword的值private Properties props;private String currentSet;private String currentName;private StringBuffer currentValue = new StringBuffer();//构建器初始化propspublic ConfigParser() {this.props = new Properties();}public Properties getProps() {return this.props;}//定义开始解析元素的方法. 这里是将中的名称xxx提取出来.public void startElement(String uri, String localName, String qName, Attributes attributes)throws SAXException {currentValue.delete(0, currentValue.length());this.currentName =qName;}//这里是将之间的值加入到currentValuepublic void characters(char[] ch, int start, int length) throws SAXException {currentValue.append(ch, start, length);}//在遇到结束后,将之前的名称和值一一对应保存在props中public void endElement(String uri, String localName, String qName) throws SAXException {props.put(qName.toLowerCase(), currentValue.toString().trim());}}上面的这个解析程序比较简单吧? 其实解析XML就是这么简单。现在我们已经将dbhost dbuser dbpassword的值localhost sqlname username password提取了出来。但是这只是在在解析器内部,我们的程序还不能访问。需要再编制一个程序。import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import .URL;public class ParseXML{//定义一个Properties 用来存放 dbhost dbuser dbpassword的值private Properties props;//这里的propspublic Properties getProps() {return this.props;}public void parse(String filename) throws Exception {//将我们的解析器对象化ConfigParser handler = new ConfigParser();//获取SAX工厂对象SAXParserFactory factory = SAXParserFactory.newInstance();factory.setNamespaceAware(false);factory.setValidating(false);//获取SAX解析SAXParser parser = factory.newSAXParser();//得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes//下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义URL confURL = BeansConstants.class.getClassLoader().getResource(filename);try{//将解析器和解析对象myenv.xml联系起来,开始解析parser.parse(confURL.toString(), handler);//获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了props = handler.getProps();}finally{factory=null;parser=null;handler=null;}}}由于我们的XML文件是使用最简单的形式 ,因此解析器相对简单,但是这已经足够对付我们的配置文件了。

③ java 读取一个路径下的所有 xml类型的文件

得到所有的文件,然后再根据文件名来判断是不是以.xml结尾的,如果是就读取

④ JAVA读取XML文件

import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class Xml { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("E:\\新建 文本文档 (3).xml")); Element rootElement = document.getDocumentElement(); NodeList list = rootElement.getElementsByTagName("Header"); Element element = (Element) list.item(0); System.out.println(element.getChildNodes().item(0).getNodeValue()); } catch (Exception e) { System.out.println("exception:" + e.getMessage()); } }}

⑤ java如何读取XML配置文件

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对文件的读取,是我们首先要解决的问题。一、XML文件这个示例文件包括了用来打开ORACLE数据库的各种参数<?xml version="1.0" encoding="UTF-8"?><dbmsg> <dbinfo> <drivername>oracle.jdbc.driver.OracleDriver</drivername> <sConnStr>jdbc:oracle:thin:@11.88.225.80:1521:VOUCHERDB</sConnStr> <username>SYS AS SYSDBA</username> <password>voucherdb</password> </dbinfo></dbmsg>二、编写类名为ReadXml的类,用于解析XML文件我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。package voucher.basic;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class ReadXml { private String drivername; private String sConnStr; private String username; private String password; public String getDrivername() { return drivername; }public String getSConnStr() { return sConnStr; }public String getUsername() { return username; }public String getPassword() { return password; } public void setDrivername(String drivername) { this.drivername = drivername; }public void setSConnStr(String connStr) { sConnStr = connStr; }public void setUsername(String username) { this.username = username; }public void setPassword(String password) { this.password = password; }public ReadXml(String fileName){ DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance(); try { DocumentBuilder dombuilder=domfac.newDocumentBuilder(); InputStream is=new FileInputStream(fileName); Document doc=dombuilder.parse(is); Element root=doc.getDocumentElement(); NodeList dbinfo=root.getChildNodes(); if(dbinfo!=null){ for(int i=0;i<dbinfo.getLength();i++){ Node db=dbinfo.item(i); for(Node node=db.getFirstChild();node!=null;node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("drivername")){ setDrivername(node.getFirstChild().getNodeValue()); } if(node.getNodeName().equals("sConnStr")){ setSConnStr(node.getFirstChild().getNodeValue()); } if(node.getNodeName().equals("username")){ setUsername(node.getFirstChild().getNodeValue()); } if(node.getNodeName().equals("password")){ setPassword(node.getFirstChild().getNodeValue()); } } } } } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。三、如何获取XML文件全路径并读取配置参数获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。1.在servlet中获取XML文件的全路径并读取配置参数程序片段String dirPath = getServletContext().getRealPath( "/WEB-INF"); String fileName = dirPath + "/conn.xml"; ReadXml xm = new ReadXml(fileName); String DriverName = xm.getDrivername(); String connStr = xm.getSConnStr(); String user = xm.getUsername(); String pas = xm.getPassword();将这段程序添加到servlet中dopost()之后即可完成参数的读取2.在单独的JAVA类中获取全路径并读取配置参数程序片段String dirpath = System.getProperty("user.dir"); String xmlFile = dirpath + "/WebRoot/WEB-INF/conn.xml"; ReadXml rdxml = new ReadXml(xmlFile); String driverName = rdxml.getDrivername(); String sConnStr = rdxml.getSConnStr(); String userName = rdxml.getUsername(); String passWord = rdxml.getPassword();注:配置文件conn.xml保存在webroot/WEB-INF目录中。

⑥ 在java在如何解析XML文件

在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB1. DOM(Document Object Model) 此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点 。 因此非常消耗系统性能 ,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。 实例:import javax.xml.parsers.*; //XML解析器接口 import org.w3c.dom.*; //XML的DOM实现 import org.apache.crimson.tree.XmlDocument;//写XML文件要用到DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //允许名字空间 factory.setNamespaceAware(true); //允许验证 factory.setValidating(true); //获得DocumentBuilder的一个实例try { DocumentBuilder builder = factory.newDocumentBuilder();} catch (ParserConfigurationException pce) { System.err.println(pce);// 出异常时输出异常信息,然后退出,下同System.exit(1);} //解析文档,并获得一个Document实例。 try { Document doc = builder.parse(fileURI);} catch (DOMException dom) {System.err.println(dom.getMessage());System.exit(1);} catch (IOException ioe) {System.err.println(ioe);System.exit(1); } //获得根节点StuInfoElement elmtStuInfo = doc.getDocumentElement(); //得到所有student节点 NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS( strNamespace, "student");for (……){ //当前student节点元素 Element elmtStudent = (Element)nlStudent.item(i); NodeList nlCurrent = elmtStudent.getElementsByTagNameNS( strNamespace, "name");}


赞 (0)