java中读xml文件,获取文件本身所在的磁盘位置

获取文件本身所在的磁盘位置

1.Class.getResource("")方法     http://blog.csdn.net/a15501628162/article/details/24326383

2.在通过servlet中的request获得
request.getServletContext();
ServletContext servletContext=request.getServletContext();
String realPath = servletContext.getRealPath("/WEB-INF/classes/Adress.xml");
File f = new File(realPath);



    



java中读xml文件








1.Adress.xml


<?xml version="1.0" encoding="UTF-8"?>
<hcData>
<Adress>
<pro>北京</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>上海</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>天津</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>重庆</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>黑龙江</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>吉林</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>辽宁</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>内蒙古</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>山西</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>河北</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>河南</pro>
<city></city>
<jxs></jxs>
</Adress>
<Adress>
<pro>山东</pro>
<city>青岛</city>
<jxs>青岛店</jxs>
</Adress>
<Adress>
<pro>江苏</pro>
<city>南京</city>
<jxs>南京店</jxs>
</Adress>
<Adress>
<pro>江苏</pro>
<city>淮安</city>
<jxs>淮安店</jxs>
</Adress>
</hcData>

2.XmlObject.java


package edu.cslg.huachen.util;


public class XmlObject {
private String pro;
private String city;
private String jxs;


public String getPro() {
return pro;
}


public void setPro(String pro) {
this.pro = pro;
}


public String getCity() {
return city;
}


public void setCity(String city) {
this.city = city;
}


public String getJxs() {
return jxs;
}


public void setJxs(String jxs) {
this.jxs = jxs;
}


}


3.ReadXml.java

package edu.cslg.huachen.util;


import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class ReadXml {

public List<XmlObject> readXml(HttpServletRequest request){

// 1.在servlet中通过request获得
// request.getServletContext();
// ServletContext servletContext=request.getServletContext();
// String realPath = servletContext.getRealPath("/WEB-INF/classes/Adress.xml");
// File f = new File(realPath);


// 2.在action中读取
// ServletContext servletContext = ServletActionContext.getServletContext();
// servletContext = servletContext.getRealPath("/WEB-INF/classes/Adress.xml");
// File f = new File(realPath);

// 2.通过Class.getResource("")方法 读取
File f = new File(getClass().getResource("/Adress.xml").getFile());

List<XmlObject> xmlList = new ArrayList<XmlObject>();
SAXReader reader = new SAXReader();
try {
Document document = reader.read(f);
Element element = document.getRootElement();
Iterator<Element> it = element.elementIterator("Adress");

while(it.hasNext()){
XmlObject xmlObject = new XmlObject();
Element ele = it.next();
xmlObject.setPro(ele.elementText("pro"));
xmlObject.setCity(ele.elementText("city"));
xmlObject.setJxs(ele.elementText("jxs"));
xmlList.add(xmlObject);
}

} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xmlList;
}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中读XML文件的常用方式是使用DOM(文档对象模型)或SAX(简单API for XML)解析器。 1. DOM解析器: DOM解析器将文档加载到内存中,形成一个树形结构。每个节点都是一个Java对象,可以通过节点之间的关系来遍历整个文档。DOM解析器适用于对XML文档进行较复杂的操作和处理。 示例代码: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("example.xml")); // 获取根节点 Element root = document.getDocumentElement(); // 获取节点内容 NodeList nodeList = root.getElementsByTagName("node"); for (int i = 0; i < nodeList.getLength(); i++) { Element node = (Element) nodeList.item(i); String content = node.getTextContent(); System.out.println(content); } ``` 2. SAX解析器: SAX解析器是一种基于事件驱动的解析器,不将整个文档加载到内存中,而是边读边解析,遇到节点时触发事件。SAX解析器适用于对XML文档进行较简单的操作和处理。 示例代码: ```java SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { boolean nodeFlag = false; StringBuilder content = new StringBuilder(); public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("node")) { nodeFlag = true; content.setLength(0); } } public void characters(char[] ch, int start, int length) throws SAXException { if (nodeFlag) { content.append(new String(ch, start, length)); } } public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equalsIgnoreCase("node")) { nodeFlag = false; System.out.println(content.toString()); } } }; saxParser.parse(new File("example.xml"), handler); ``` 以上示例代码中的example.xml文件内容如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <root> <node>content1</node> <node>content2</node> <node>content3</node> </root> ``` 输出结果: ``` content1 content2 content3 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值