JAVA读取XML文件

JAVA读取XML文件,第1张

import javaioFile;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNodeList;
public class Xml {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
newInstance();
DocumentBuilder builder = factorynewDocumentBuilder();
Document document = builderparse(new File("E:\\新建 文本文档 (3)xml"));
Element rootElement = documentgetDocumentElement();
NodeList list = rootElementgetElementsByTagName("Header");
Element element = (Element) listitem(0);
Systemoutprintln(elementgetChildNodes()item(0)getNodeValue());
} catch (Exception e) {
Systemoutprintln("exception:" + egetMessage());
}
}
}

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。
一、XML文件
这个示例文件包括了用来打开ORACLE数据库的各种参数
<xml version="10" encoding="UTF-8">
<dbmsg>
<dbinfo>
<drivername>oraclejdbcdriverOracleDriver</drivername>
<sConnStr>jdbc:oracle:thin:@118822580:1521:VOUCHERDB</sConnStr>
<username>SYS AS SYSDBA</username>
<password>voucherdb</password>
</dbinfo>
</dbmsg>
二、编写类名为ReadXml的类,用于解析XML文件
我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。
package voucherbasic;
import javaioFileInputStream;
import javaioFileNotFoundException;
import javaioIOException;
import javaioInputStream;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import javaxxmlparsersParserConfigurationException;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNode;
import orgw3cdomNodeList;
import orgxmlsaxSAXException;
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) {
thisdrivername = drivername;
}
public void setSConnStr(String connStr) {
sConnStr = connStr;
}
public void setUsername(String username) {
thisusername = username;
}
public void setPassword(String password) {
thispassword = password;
}
public ReadXml(String fileName){
DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();
try {
DocumentBuilder dombuilder=domfacnewDocumentBuilder();
InputStream is=new FileInputStream(fileName);
Document doc=dombuilderparse(is);
Element root=docgetDocumentElement();
NodeList dbinfo=rootgetChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfogetLength();i++){
Node db=dbinfoitem(i);
for(Node node=dbgetFirstChild();node!=null;node=nodegetNextSibling()){
if(nodegetNodeType()==NodeELEMENT_NODE){
if(nodegetNodeName()equals("drivername")){
setDrivername(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("sConnStr")){
setSConnStr(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("username")){
setUsername(nodegetFirstChild()getNodeValue());
}
if(nodegetNodeName()equals("password")){
setPassword(nodegetFirstChild()getNodeValue());
}
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}


这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。

三、如何获取XML文件全路径并读取配置参数
获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。
1在servlet中获取XML文件的全路径并读取配置参数
程序片段String dirPath = getServletContext()getRealPath( "/WEB-INF");
String fileName = dirPath + "/connxml";
ReadXml xm = new ReadXml(fileName);
String DriverName = xmgetDrivername();
String connStr = xmgetSConnStr();
String user = xmgetUsername();
String pas = xmgetPassword();
将这段程序添加到servlet中dopost()之后即可完成参数的读取
2在单独的JAVA类中获取全路径并读取配置参数
程序片段

String dirpath = SystemgetProperty("userdir");
String xmlFile = dirpath + "/WebRoot/WEB-INF/connxml";
ReadXml rdxml = new ReadXml(xmlFile);
String driverName = rdxmlgetDrivername();
String sConnStr = rdxmlgetSConnStr();
String userName = rdxmlgetUsername();
String passWord = rdxmlgetPassword();

注:配置文件connxml保存在webroot/WEB-INF目录中。

不说废话直接上代码,下面是要读取的xml文件:

<xml version="10" encoding="UTF-8">
<PERSON>
  <NAME>a1</NAME>
  <ADDRESS>b1</ADDRESS>
  <TEL>c1</TEL>
  <FAX>d1</FAX>
  <EMAIL>e1</EMAIL>
</PERSON>

下面是读取xml文件的java代码,在数据库中建一张和xml文件字段对应的表,将读取的数据插入到表中。如果数据插入不会,欢迎继续追问:

import javaioFile;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNodeList;
public class Test {
public static void main(String[] args) throws Exception{
Systemoutprintln("22");
DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();
DocumentBuilder db = dbfnewDocumentBuilder();
Document document = dbparse(new File("candidatexml"));
NodeList list = documentgetElementsByTagName("PERSON");
for(int i = 0; i < listgetLength(); i++)
{
Element element = (Element)listitem(i);
String content = elementgetElementsByTagName("NAME")item(0)getFirstChild()getNodeValue();
            content = elementgetElementsByTagName("ADDRESS")item(0)getFirstChild()getNodeValue();
            content = elementgetElementsByTagName("TEL")item(0)getFirstChild()getNodeValue();
            content = elementgetElementsByTagName("FAX")item(0)getFirstChild()getNodeValue();
            content = elementgetElementsByTagName("EMAIL")item(0)getFirstChild()getNodeValue();
        }
    }
}

import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNodeList;
//以上是要进行xml文档处理需导入的包和类
public class Xml {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
newInstance(); //实例化一个工厂类
DocumentBuilder builder = factorynewDocumentBuilder(); //创建树立xml文档的对象,具体名称我也说不上,其上以上两条语句都是为处理xml文档做准备的,即进行初始化工作
Document document = builderparse(new File("E:\\xmlxml")); //导入xml文档
Element rootElement = documentgetDocumentElement(); //得到根节点对象,即<Root>
NodeList list = rootElementgetElementsByTagName("Header"); //通过标签名"Header"得到<Header>结点对象的列表,即所有名为"Header"的结点都被保存在一个list列表对象中
Element element = (Element) listitem(0); //获取第一个list对象,这里就是<Header>结点
Systemoutprintln(elementgetChildNodes()item(0)getNodeValue()); //输出<Header>结点的第一个子节点的值,这里没有其他子节点,则直接返回"日报表"
} catch (Exception e) {
Systemoutprintln("exception:" + egetMessage()); //若有异常,则输出异常信息
}
}
}

java怎么解析xml最简单

方法/步骤1先把xml中除了根节点的节点设置成对象,

2然后在对象就在加上xml注解,

3定义一个xml字符串的参数功能之后的解析效果查看,

4使用JAXBContextnewInstance实例化对象,

5把实例化的对象转换成xml的对象树,

6把xml字符串参数通过xml对象树转换成对象,

java读取xml信息常用技术有dom解析和dom4J解析
dom4j是最常用的java解析xml技术,在使用时需要下载dom4jjar
具体解析方法可以参考一下内容
xml结构

<books>
<book id="001">
<title>Harry Potter</title>
<author>J K Rowling</author>
</book>
<book id="002">
<title>Learning XML</title>
<author>Erik T Ray</author>
</book>
</books>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10545591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存