
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文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)