【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“parseString.java”一文,供大家参考学习!
package ch6.xml;
import java.io.*;
import org.apache.xerces.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
/**
* parseString.java 本例主要
演示如解析XML字符串用DOM
*/
public class parseString {
public void parseAndPrint(InputSource xmlSource) {
Document doc = null;
try {
DOMParser parser = new DOMParser();
parser.parse(
xmlSource);
doc = parser.getDocument();
} catch (Exception e) {
System.err.println("Sorry, an error occurred: " + e);
}
// 打字
文档.
if (doc != null) {
printDOMTree(doc);
}
}
/** 打字给定的结点, 并重新构建. */
public void printDOMTree(Node node) {
int type = node.getNodeType();
switch (type) {
// 打印
文档的元素
case Node.DOCUMENT_NODE: {
System.out.println("<?xml version=\"1.0\" ?>");
printDOMTree(((Document) node).getDocumentElement());
break;
}
// 打印元素的属性
case Node.ELEMENT_NODE: {
System.out.print("<");
System.out.print(node.getNodeName());
NamedNodeMap attrs = node.getAttributes();
for (int i = 0; i < attrs.getLength(); i++) {
Node attr = attrs.item(i);
System.out.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue()
+ "\"");
}
System.out.println(">");
NodeList children = node.getChildNodes();
if (children != null) {
int len = children.getLength();
for (int i = 0; i < len; i++) {
printDOMTree(children.item(i));
}
}
break;
}
// 处理结点引用的实体
case Node.ENTITY_REFERENCE_NODE: {
System.out.print("&");
System.out.print(node.getNodeName());
System.out.print(";");
break;
}
// 打印 cdata 片段
case Node.CDATA_SECTION_NODE: {
System.out.print("<![CDATA[");
System.out.print(node.getNodeValue());
System.out.print("]]>");
break;
}
// 打印文本
case Node.TEXT_NODE: {
System.out.print(node.getNodeValue());
break;
}
// 打印处理指令
case Node.PROCESSING_INSTRUCTION_NODE: {
System.out.print("<?");
System.out.print(node.getNodeName());
String data = node.getNodeValue();
{
System.out.print(" ");
System.out.print(data);
}
System.out.print("?>");
break;
}
}
if (type == Node.ELEMENT_NODE) {
System.out.println();
System.out.print("</");
System.out.print(node.getNodeName());
System.out.print('>');
}
}
/** 主方法. */
public static void main(String argv[]) {
parseString ps = new parseString();
StringReader sr = new StringReader(
"<?xml version = \"1.0\"?><a>天峰<b>娜娜</b><c>沙沙</c></a>");
InputSource iSrc = new InputSource(sr);
ps.parseAndPrint(iSrc);
}
}