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

java 读取一个路径下的所有 xml类型的文件,第1张

import javaioBufferedWriter;

import javaioFile;

import javaioFileWriter;

import javaioIOException;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import javaxxmlparsersParserConfigurationException;

import javaxxmltransformTransformer;

import javaxxmltransformTransformerConfigurationException;

import javaxxmltransformTransformerException;

import javaxxmltransformTransformerFactory;

import javaxxmltransformdomDOMSource;

import javaxxmltransformstreamStreamResult;

import orgw3cdomElement;

import orgw3cdomNode;

import orgw3cdomNodeList;

//import orgjdom2Document;

import orgxmlsaxSAXException;

public class tt {

    public static void  main (String [] arg) {

        DocumentBuilderFactory dFactory =DocumentBuilderFactorynewInstance();

        DocumentBuilder dBuilder =  null;

        try {

            dBuilder = dFactorynewDocumentBuilder();

        } catch (ParserConfigurationException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }

        orgw3cdomDocument document = null;  

        try {

     document = dBuilderparse("E:/workspace/XMLTest/src/ttxml");

        } catch (SAXException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }

        Element root=  documentgetDocumentElement();

        NodeList nList = rootgetChildNodes();

        Systemoutprintln(nListgetLength()+rootgetNodeName());

                        

        //for(int i=0 ; i< nListgetLength() ; i++){

            Systemoutprintln(nListitem(1)getChildNodes()item(1)getTextContent()+ "hahah");

        //}

            NodeList nodeList =documentgetElementsByTagName("StepDescription");

            nodeListitem(0)getChildNodes()item(1)getAttributes()item(0)setNodeValue("ranqi");

            Systemoutprintln(nodeListitem(0)getChildNodes()item(1)getAttributes()item(0)getNodeValue()+ "7777");

        DOMSource source = new DOMSource(document);

        StreamResult sResult = new StreamResult(new File("E:/workspace/XMLTest/src/tt_11xml"));

        TransformerFactory tFactory =TransformerFactorynewInstance();

        Transformer transformer =null;

        try {

            transformer =tFactorynewTransformer();

                                

                try {

                    transformertransform(source, sResult);

                } catch (TransformerException e) {

                    // TODO Auto-generated catch block

                    eprintStackTrace();

                }

                                

        } catch (TransformerConfigurationException e) {

            // TODO Auto-generated catch block

            eprintStackTrace();

        }

                            

    }

}

这还是我读E:/workspace/XMLTest/src/ttxml这个路径下的xml文档

string[] fs = SystemIODirectoryGetFiles(ServerMapPath("/"), "xml", SystemIOSearchOptionAllDirectories);

前者:

用在webconfig或者appconfig之类

是系统约定的节点,约定在这个节点下的所有

节点会被systemconfigurationconfigurationmanagerappsetting读到

后者:

完全的自定义接点,appsettings表示什么意思,add表示什么意思将在自己写的xml解析方法里指定和使用

简单来说,config是xml的一个子集

通常的xml都是只定义基本语法,至于节点的层次,节点格式,节点的含义,节点怎么被解析都是你自己定义使得你的xml文件能和你的xml解析方法对应

而webconfig,appconfig这类,是microsoft和软件作者已经定义好了节点意义,你只需要遵守他的格式和规则,就能达到配置作用。

打个可能不太好的比方:

xml文件本身是扑克牌

config是斗地主。

你用config,就不需要自己制定规则,按照它的规则打就行。很方便,但是你不能违反他的规则。

而你自己写xml,还要先制定好规则,规则怎么定都随便你,然后按照这个规则出牌

当然,这些都有一个大前提,都满足xml节点规范,你不能制定扑克牌的规则中放入几个麻将牌

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目录中。

用下面的试试:

Document document = builderparse(new File("D:\\中文\\aaxml"));

原因:

builderparse(String url) 这个传的参数用url的方式的,中文会有编码问题。

另外,你路径中的冒号用了中文符号,要注意!

如果是在纯java类中

String dirpath = SystemgetProperty("userdir"); String xmlFile = dirpath + "/WebRoot/WEB-INF/serverxml"; String fileName = dirPath + "/serverxml";

在servlet中

String dirPath = getServletContext()getRealPath( "/WEB-INF"); String xmlFile = dirPath + "/serverxml";

在jsp中

String dirPath= requestgetServletContext()getRealPath("/WEB-INF"); String xmlFile = dirPath+"serverxml";

我自己的xml文件是放在WebRoot/WEB_INF下

参考:

>

以上就是关于java 读取一个路径下的所有 xml类型的文件全部的内容,包括:java 读取一个路径下的所有 xml类型的文件、C#web读取服务器路径下面的所有xml文件、java中如何获取WebContent下config文件下的xx.xml文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9473396.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存