XML问件解析(面向对象)
来源:互联网 发布:央视电视直播软件 编辑:程序博客网 时间:2024/06/14 00:47
一.接口
package objectXML;
import org.w3c.dom.Document;
public interface InterXML {
//用来各种方法的调用
public void DOMParserXML(String fileName);
//打印Document中的所有元素
public void printElement(Document doc);
//打印Document中的所有属性
public void printAttributes(Document doc);
}
二.实现接口中的方法
package objectXML;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.sun.org.apache.xerces.internal.parsers.DOMParser;
public class PrintXML implements InterXML {
public void DOMParserXML(String fileName) {
// TODO Auto-generated method stub
try {
//使用缓冲字符流输入读取要解析的文件
BufferedReader in = new BufferedReader(new FileReader(fileName));
//创建一个解析器
DOMParser parser = new DOMParser();
//解析XML文件
parser.parse(new InputSource(in));
//获得解析后的文件信息
Document doc = parser.getDocument();
//打印Document中的所有元素
System.out.println("元素是:");
printElement(doc);
//打印Document中的所有属性
System.out.println();
System.out.println("属性是:");
printAttributes(doc);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void printAttributes(Document doc) {
// TODO 打印Document中的所有属性
//获得所有节点名称的集合
NodeList list = doc.getElementsByTagName("*");
//循环打印
for(int i=0;i<list.getLength();i++){
//根据指定的索引得到元素节点
Element e = (Element)list.item(i);
//输出元素的名称及值
System.out.println(e.getTagName()+":"+e.getFirstChild().getNodeValue());
//获得节点中的所有属性
NamedNodeMap map = e.getAttributes();
//判断是否有属性
if(map != null){
for(int j=0;j<map.getLength();j++){
//获得指定索引的属性
Attr attr = (Attr)map.item(j);
System.out.println(attr.getName()+":"+attr.getValue());
}
}
}
}
public void printElement(Document doc) {
// TODO 打印所有元素名称
NodeList list = doc.getElementsByTagName("*");
for(int i=0;i<list.getLength();i++){
Node e = list.item(i);
System.out.println(e.getNodeName()+" ");
}
}
}
三.类的调用
package objectXML;
public class TestXML {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 类的调用
if(args.length != 1){
System.err.println("Usage: java DOMSample filename");
System.exit(1);
}
InterXML print = new PrintXML();
//从外面传进来参数(要解析的XML文件路径)
print.DOMParserXML(args[0]);
}
}
- XML问件解析(面向对象)
- 面试官问你什么是面向对象?
- 面向对象概念解析
- [php] 面向对象解析
- 面向对象思想解析
- 每日一问之XML的解析
- XML解析为对象
- 数牛面向对象解析
- Java面向对象的解析
- 面向对象解析(一)
- PHP面向对象笔记解析
- 面向对象六大原则解析
- 面向对象的内存解析
- 什么是面向对象,面试问到面向对象到底要怎么说?
- 编程基础-面向对象-基于模板的面向对象解析
- java解析XML为对象
- XML解析 反射成为对象
- JAXBContext解析XML集合对象
- 2012蓝桥杯软件大赛决赛(火柴游戏)
- XML文档例子
- Android 后台Service : 向服务器发送心跳包
- 重新读数据结构 - 心得
- 如何正确获取MySql/Access的ADO连接字符串
- XML问件解析(面向对象)
- 深入浅出python 1
- hadoop安装
- 当对象内文本溢出时显示省略标记 使文字换了行,解决了把div表格撑的很大的问题
- 【打包程序】VS2005打包应用程序
- VC++下用MSComm控件实现串口通讯
- MFC Socket 编程
- solaris开启ssh
- Windows 调试工具入门-2-基本调试操作