XML读取两种方法
//第一种SAX方法解析
package a20170722.xmlex;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class parseUserInfoSAX {
public static void main(String[] args) throws Exception {
File file=new File("src/a20170722/xmlex/UserInfoxml.xml");
SAX(file);
}
//SAX解析
public static void SAX(File file) throws Exception{
//创建解析工厂
SAXParserFactory sax=SAXParserFactory.newInstance();
//创建解析对象
SAXParser saxParser = sax.newSAXParser();
//创建自定义解析
MyHeader mh=new MyHeader();
saxParser.parse(file,mh);
for (User userlist:mh.userList) {
System.out.println(userlist);
}
}
}
class MyHeader extends DefaultHandler{
List<User> userList=new ArrayList<User>();
static String name;
static String age;
static String address;
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equals("user")){
name=attributes.getValue("name");
age=attributes.getValue("age");
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
String str=new String(ch,start,length);
str=str.trim();
address=str;
if((name!=null)){
if((address.length()>1)){
userList.add(new User(name,age,address));
}
}
}
}
class User{
String name;
String age;
String address;
public User(String name, String age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "[name]="+name+"[age]="+age+"[address]="+address;
}
}
//第二种DOM方法解析
package a20170722.xmlex;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class parseUserInfoDom {
public static void main(String[] args) throws Exception {
File file=new File("src/a20170722/xmlex/UserInfoxml.xml");
dom(file);
}
public static void dom(File file) throws Exception{
List<UserInfo> userList=new ArrayList<UserInfo>();
//创建dom解析工厂
DocumentBuilderFactory DBFactory=DocumentBuilderFactory.newInstance();
//创建解析对象
DocumentBuilder DBuilder = DBFactory.newDocumentBuilder();
Document Dt = DBuilder.parse(file);
NodeList TagName = Dt.getElementsByTagName("user");
for (int i = 0; i < TagName.getLength(); i++) {
Node node = TagName.item(i);
Element ele=(Element) node;
String name=ele.getAttribute("name");
String address=ele.getTextContent();
if(Integer.parseInt(ele.getAttribute("age"))>18){
userList.add(new UserInfo(name,ele.getAttribute("age"),address.trim()));
}
}
for (UserInfo list:userList) {
System.out.println(list);
}
}
}
class UserInfo{
String name;
String age;
String address;
public UserInfo(String name, String age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "[name]="+name+"[age]="+age+"[address]="+address;
}
}
XML读取两种方法的更多相关文章
- 使用Jquery解析xml的两种方法
第一种方案(最稳妥): 先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象 var returnDataXml = parseXML(returnData); var p ...
- Python实现CSV数据的读取--两种方法实现
方法一: 方法二:
- 读取xml文件转成List<T>对象的两种方法(附源码)
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...
- 简介C#读取XML的两种方式
简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...
- 取xml文件转成List<T>对象的两种方法
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最 ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- delphi 读取excel 两种方法
http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...
- python excel操作单元格复制和读取的两种方法
操作单元格 新建一个sheet, 单元格赋值(两种方法) 单元格A1赋值为’xiaxiaoxu’ 单元格A2赋值为‘xufengchai’ 打印A1和A2单元格的值(两种方法) #coding=utf ...
- Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法
Hadoop基础-HDFS递归列出文件系统-FileStatus与listFiles两种方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. fs.listFiles方法,返回Loc ...
随机推荐
- 在Linux下的找不同-打补丁
Q:为什么要找不同,为什么要打补丁? A: 在Linux应用中,作为DBA,我们知道MySQL跑在Linux系统之上,数据库最重要的追求就是性能,"稳"是重中之重,所以不能动不动就 ...
- webapi “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
今天在来一发 webapi的一个知识点 相信用过webapi的对这个错误 已经看在眼里 痛在心里了把 我百度也搜了一下 看了一下 然后发现他们的解决办法 并没有什么软用. 然后想起来当时上学的 ...
- 扫描soa并输出所有服务方法
现在,大多公司都采用soa架构.那么我们怎么知道soa提供哪些服务方法呢?是通过浏览器不断的点击尝试?还是通过wcf?还是通过阅读soa接口文档,在软件开发行业,总会有文档落后于代码的情况?这些手法都 ...
- spring-线程池(2)
继承:http://www.cnblogs.com/crazylqy/p/4220743.html spring设置容器启动时运行线程类(可循环执行) 修改以下两文件, 1.spring设置容器启动时 ...
- C# 字典 Dictionary
原文地址http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html 侵删
- web前端面试题记录
记录了2017年5月下旬刚毕业时面试的经典面试题 布局方面 1. 响应式布局,左侧栏目固定,右侧内容随着屏幕宽度变化而变化(高频) flex布局 position布局 css3计算宽度 float布局 ...
- 百度导航试用 vs 高德导航
听说百度导航免费了,下载试用了一下: HUD模式不错,但是需要一个手机支架或挂钩.尤其是HUD景象模式,夜间把手机平放,通过前挡风玻璃反射看.这个功能有点乔布斯的感觉了. 不过路径规划还差一点,和凯立 ...
- 【Selenium】Selenium IDE(alt+ctrl+s)
ttp://www.yiibai.com/selenium/selenium_ide_tool_features.html 学习 Selenium IDE安装 http://seleniumh ...
- git 常用的命令符
1. linux操作命令: touch Filename:创建一个文件: mkdir 文件夹名字:创建一个文件夹: cd pathname:切换磁盘: cd ..:返回上一级: rm Filename ...
- angularjs下拉框实现渲染html
angualrjs处于安全的考虑,插值 指令会对相应字符串进行过滤,避免出现html攻击.但是在一些时候,我们需要渲染html,比如实现一个分级的下拉框,代码如下: <body ng-app=& ...