dom方式解析xml(2)
来源:互联网 发布:预算报价软件 编辑:程序博客网 时间:2024/06/04 18:55
Dom解析xml文件,针对于格式不规范的xml文件,元素既包含属性(eg:id)又包含子元素的情况
///////////////////////////////////////////xml文件////////////////////////////////////////////////
<persons>
<person id="20" >
<name>huang</name>
<age>24</age>
<sex>男</sex>
</person>
<person id="23" age="30" name="xiao" nativePlace="北京"/>
</persons>
///////////////////////////////////////////person类////////////////////////////////////////////////
public class Person {
private int id;
private String name;
private int age;
private String sex;
private String nativePlace;
///////////////////////////////////////////解析过程////////////////////////////////////////////////
TextView textView=(TextView) findViewById(R.id.textView);
List<Person> list=new ArrayList<Person>();if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//获得sdcard路径
String sdcardPath=Environment.getExternalStorageDirectory().getPath();
//获得要解析的文件
File personFile=new File(sdcardPath+"/persons2.xml");
if(personFile.exists()){
//得到文件建造工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
//得到建造器
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
//加载personFile.xml为document文件,来解析
Document document = builder.parse(personFile);
//获得根节点persons
Element root = document.getDocumentElement();
//获得根节点的所有子节点
NodeList nodes = root.getChildNodes();
//遍历集合,获得每一个子节点
for(int i=0;i<nodes.getLength();i++){
Node n = nodes.item(i);
//判段当前节点是不是元素节点
if(n.getNodeType()==Node.ELEMENT_NODE){
Person p=new Person();//创建person对象,收集数据
Element ele=(Element) n;//某一个person节点
//获得person节点的属性
String id = ele.getAttribute("id");
String name = ele.getAttribute("name");
String age = ele.getAttribute("age");
String sex = ele.getAttribute("sex");
String nativePlace = ele.getAttribute("nativePlace");
//如果属性不为空,就封装
if(!id.equals("")){
p.setId(Integer.parseInt(id));
}
if(!name.equals("")){
p.setName(name);
System.out.println(name);
}
if(!age.equals("")){
p.setAge(Integer.parseInt(age));
}
if(!sex.equals("")){
p.setSex(sex);
}
if(!nativePlace.equals("")){
p.setNativePlace(nativePlace);
}
//获得当前person的子节点
NodeList pNodes= ele.getChildNodes();
//循环遍历当前person的每一个子节点
for(int j=0;j<pNodes.getLength();j++){
Node item = pNodes.item(j);
//判段当前节点item是不是元素节点
if(item.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element) item;
//获得文本节点的值
String value = element.getFirstChild().getNodeValue();
//根据节点名字封装相应的值
if(element.getNodeName().equals("id")){
p.setId(Integer.parseInt(value));
}else if(element.getNodeName().equals("name")){
p.setName(value);
System.out.println(value);
}else if(element.getNodeName().equals("age")){
p.setAge(Integer.parseInt(value));
}else if(element.getNodeName().equals("sex")){
p.setSex(value);
}else if(element.getNodeName().equals("nativePlace")){
p.setNativePlace(value);
}
}
}
//把person对象添加到集合
list.add(p);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else{
Toast.makeText(MainActivity.this, "sdcard不存在", 0).show();
}
textView.setText(list.toString());
0 0
- dom方式解析xml(2)
- dom方式解析xml
- DOM方式解析XML
- DOM方式解析xml
- Dom方式解析Xml
- DOM方式解析XML
- java解析XML(DOM方式)
- XML文件解析(DOM方式)
- XML文件解析(DOM方式)
- XML文件解析(DOM方式)
- java解析XML文件(DOM方式)
- JAVA XML 解析 DOM 方式
- android dom 解析xml方式
- Dom方式创建/解析xml
- DOM的方式解析XML
- DOM方式解析XML配置文件
- Dom方式解析XML详解
- 应用DOM方式解析XML
- 安装使用jupyter(原来的Ipython notebook)
- BZOJ 1998: [Hnoi2010]Fsk物品调度
- C语言学习记录(八):高频率笔试面试题
- Problem O-1014
- Spring @Autowired 注解常用的依赖性接口及数组、Map
- dom方式解析xml(2)
- asp网页重定向问题
- React Native之ViewPagerAndroid仿淘宝首页顶部分类布局效果实现
- SQL事务
- 借助 ptpython 三个命令实现终端下 PySpark 代码高亮和代码补全:
- Codeforces Round #346 (Div. 2) F bfs+并查集
- Hdu oj 1596 find the safest road(floyd)
- UI进阶:数据解析(XML解析和JSON解析)
- 2016.3.31Python函数的参数