--------------------------------------------------
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;
}
}
--------------------------------------------------
分享到:
相关推荐
1. **语法验证**:确保XML文档符合W3C标准,包括正确的嵌套、关闭标签、属性值引号等。 2. **命名规则**:XML元素和属性名必须遵循一定的命名规则,不能以数字开头,不能包含特殊字符。 3. **编码识别**:XML文档...
"w3c 生成xml 换行实例" w3c 生成xml 换行实例是使用 Java 语言通过 DOM(Document Object Model)来生成一个 XML 文档的示例代码。下面是该示例代码的详细解释: 首先,需要导入必要的包,包括 java.io、javax....
这是xml(10年内不会失业的技术),英语不是很差的就能看懂
W3C(World Wide Web Consortium)是负责制定XML标准的组织,它提供了DOM(Document Object Model)API来处理XML文档。本篇文章将详细介绍如何使用Java结合W3C DOM API来生成XML文件。 首先,生成XML文件的基本步骤...
- 引入必要的库:`import org.w3c.dom.Document; import javax.xml.parsers.DocumentBuilderFactory;` - 创建`DocumentBuilderFactory`实例,通过`newDocumentBuilder()`方法获取`DocumentBuilder`。 - 使用`parse()...
**W3C XML Schema**,全称为World Wide Web Consortium (W3C)的XML Schema Definition Language,是XML文档的一种标准化验证机制。它为XML(eXtensible Markup Language)提供了强大的结构化定义语言,用于描述XML...
XPath是W3C标准,提供了访问XML文档的强大方式,包括选择节点、属性和文本。 在PowerBuilder中,我们可以使用XML对象来操作XML文件。这个例子中,开发者创建了一个通用的函数或过程,能够接收一个XPath表达式作为...
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
在Java编程环境中,解析XML文件是一项常见的任务,特别是在数据处理和集成中。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本教程将介绍如何使用Java解析XML文件,并将解析...
XML的语法严格且自描述,使得任何支持XML的软件都能理解和解析XML文档。XML文档由元素(Element)、属性(Attribute)、文本内容等构成。元素是XML文档的基本构建块,通过尖括号包围,如 `<element>`。属性是附加在...
### WCdom解析XML #### 知识点概览 1. **XML文档结构与DOM模型** 2. **W3C DOM API介绍** 3. **Java中的DOM解析实现** 4. **示例代码详解** #### XML文档结构与DOM模型 XML(可扩展标记语言)是一种用于标记数据...
* 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...
本篇文章将深入探讨如何在Java中解析XML,以帮助你理解和实践相关知识。 一、DOM解析器 DOM(Document Object Model)解析器是Java中的一种常用方法,它将整个XML文档加载到内存中,形成一个树形结构。以下是一个...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,常用于数据交换、配置存储等场景。在Java中,有多种方式可以解析XML文件,主要包括DOM(Document Object ...
1. `org.w3c.dom`:这是W3C推荐的DOM接口,用于处理XML文档的标准规划。 2. `org.xml.sax`:提供了一套事件驱动的API,用于解析XML文档,实现SAX解析。 3. `javax.xml.parsers`:包含解析器工厂类,如`...
1. DOM解析器:DOM是W3C推荐的一种解析XML的标准方式,它将整个XML文档加载到内存中形成一个树形结构,称为DOM树。通过DOM解析器,开发者可以轻松地遍历整个文档,访问任何元素或属性。优点是可以任意位置访问,但...
DOM是W3C制定的一种标准,它将XML文档转化为一个对象树,允许开发者通过遍历树形结构来访问和修改XML文档的任意部分。DOM解析器会一次性加载整个XML文档到内存,所以适用于小型XML文档。在上述代码中,我们使用了...