--------------------------------------------------
W3C解析xml
解析XML
org.w3c.dom
--------------------------------------------------
TestXmlUtil.java
package xml;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
public class TestXmlUtil {
public static void main(String[] args) {
XmlUtil x = new XmlUtil();
try {
x.build("jbpm4/jpdl/process.jpdl.xml");
x.printAllNodes(x.listChildNodes("process/start/transition"));
System.out.println("END");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
}
--------------------------------------------------
XmlNode.java
package xml;
import org.w3c.dom.Node;
public class XmlNode {
private String name;
private String fullName;
private String pathName;
private String split = "-->";
private String path = "/";
private Node node;
public String getSplit() {
return split;
}
public void setSplit(String split) {
this.split = split;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
StringBuffer buffer = new StringBuffer();
this.recursionFullName(buffer, node);
this.fullName = buffer.toString().substring(0,
buffer.length() - this.split.length());
}
public String getPathName() {
return pathName;
}
public void setPathName(String pathName) {
StringBuffer buffer = new StringBuffer();
this.recursionPathName(buffer, node);
this.pathName = buffer.toString().substring(0,
buffer.length() - this.path.length());
}
public org.w3c.dom.Node getNode() {
return node;
}
public void setNode(org.w3c.dom.Node node) {
this.node = node;
}
public void recursionFullName(StringBuffer buffer, Node node) {
String nodeName = node.getNodeName();
if (node.getParentNode().getNodeName().equals("#document")) {
String temp = nodeName + this.split + buffer.toString();
buffer.delete(0, buffer.length());
buffer.append(temp);
return;
} else {
String temp = nodeName + this.split + buffer.toString();
buffer.delete(0, buffer.length());
buffer.append(temp);
recursionFullName(buffer, node.getParentNode());
}
}
public void recursionPathName(StringBuffer buffer, Node node) {
String nodeName = node.getNodeName();
if (node.getParentNode().getNodeName().equals("#document")) {
String temp = nodeName + this.path + buffer.toString();
buffer.delete(0, buffer.length());
buffer.append(temp);
return;
} else {
String temp = nodeName + this.path + buffer.toString();
buffer.delete(0, buffer.length());
buffer.append(temp);
recursionPathName(buffer, node.getParentNode());
}
}
}
--------------------------------------------------
XmlUtil.java
package xml;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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.SAXException;
public class XmlUtil {
private DocumentBuilderFactory factory = null;
private DocumentBuilder doc = null;
private Document document = null;
private Element elementRoot = null;
public void build(String sourceName) throws SAXException, IOException,
ParserConfigurationException {
factory = DocumentBuilderFactory.newInstance();
doc = factory.newDocumentBuilder();
InputStream in = this.getInputStream(sourceName);
document = doc.parse(in);
elementRoot = document.getDocumentElement();
}
// 输出所有的孩子节点名字
public void printAllNodes(ArrayList<XmlNode> xmlNodes) {
for (XmlNode xmlNode : xmlNodes) {
System.out.println("node name=" + xmlNode.getNode().getNodeName());
System.out.println("node FullName=" + xmlNode.getFullName());
System.out.println("node PathName=" + xmlNode.getPathName());
NamedNodeMap a = xmlNode.getNode().getAttributes();
if (a != null && a.getNamedItem("name") != null) {
System.out.print("Attributes Name=");
System.out.println(a.getNamedItem("name").getNodeValue());
}
}
}
// 取得所有的孩子节点
public ArrayList<XmlNode> listChildNodes(String sourceName) {
ArrayList<XmlNode> xmlNodes = this.listAllNodes(this.getRoot());
for (XmlNode xmlNode : xmlNodes) {
if (xmlNode.getPathName().equals(sourceName)) {
return this.listAllNodes(xmlNode.getNode());
}
}
return new ArrayList<XmlNode>();
}
// 添加一个节点到集合
private void addNode(ArrayList<XmlNode> xmlNodes, Node root) {
if (root.getNodeType() == 1) {
XmlNode xmlNode = new XmlNode();
String nodeName = root.getNodeName();
xmlNode.setNode(root);
xmlNode.setName(nodeName);
xmlNode.setFullName(nodeName);
xmlNode.setPathName(nodeName);
xmlNodes.add(xmlNode);
}
NodeList list = root.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
addNode(xmlNodes, node);
}
}
// 取得所有节点
public ArrayList<XmlNode> listAllNodes(Node root) {
ArrayList<XmlNode> xmlNodes = new ArrayList<XmlNode>();
this.addNode(xmlNodes, root);
return xmlNodes;
}
// 转换成InputStream
public InputStream getInputStream(String sourceName)
throws FileNotFoundException {
URL url = this.getClass().getClassLoader().getResource(sourceName);
FileInputStream fis = new FileInputStream(new File(url.getPath()));
return fis;
}
// 取得开始节点
public Element getRoot() {
return this.elementRoot;
}
}
--------------------------------------------------
分享到:
相关推荐
W3C解析xml
这是xml(10年内不会失业的技术),英语不是很差的就能看懂
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改...与W3C DOM API相比,使用dom4j所包含的解析器的好处是dom4j拥有本地的XPath支持。DOM解析器不支持使用XPath选择节点。
* 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...
java dom 解析 xml 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
W3C 标准 XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)。 换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 ->操作创建或...
易语言EXMLParser.fne支持库中文名为易语言XML解析支持库,本易语言支持库提供对W3C标准XML文件的读写支持。目前本易语言支持库仅支持W3C标准的XML文件,不支持DTD。支持BASE64编码文本和CDATA文本,编码方面仅支持...
这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,... python解析XML常见的有三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合
易语言EXMLParser_static.lib支持库中文名为易语言XML解析支持库,本易语言支持库提供对W3C标准XML文件的读写支持。目前本支持库仅支持W3C标准的XML文件,不支持DTD。支持BASE64编码文本和CDATA文本,编码方面仅支持...
一个xml的解析方法,供参考。 import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource;
// 解析XML文档的输入流,得到一个Document Document doc = dombuilder.parse(is); // 得到XML文档的根节点 Element root = doc.getDocumentElement(); // 得到节点的子节点 NodeList books = root....
XML被设计成易于实现,且可在SGML和HTML之间互相操作(W3C XML工作组对XML的定义)。 它是Internet环境中跨平台的、依赖于内容的技术,是这个时代中处理分布式结构信息的选择工具,用它来简化通过Internet的文档信息...
w3c-dom.jar 包 dom解析xml使用 包 免积分下载
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做...
java解析xml四种方式 DOM (Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的标准接口, DOM采用建立树形结构的方式访问XML文档. SAX(Simple API for XML) 不是某个官方标准,但它是 XML 社区事实...
XML 是 W3C 的推荐标准 XML 允许创作者定义自己的标签和自己的文档结构。 XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。 XML文件的创建 1.直接创建fil
DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以 层次结构组织的节点或信息片断的集合。
RapidXml 试图成为最快的 XML DOM 解析工具包,同时保证解析结果的可用性、可移植性以及与 W3C 标准的兼容性。RapidXml 使用 C++ 编写,因此在操作同一数据时,其解析速度接近于 strlen() 函数。 整个解析工具包包含...
xml解析方式包括w3c dom,sax,xpp,stax,vtd方式,其实还有jdom和xmlevent这样才够全面