- 浏览: 14059 次
- 性别:
- 来自: 北京
最新评论
<!--
Sams Teach Yourself JavaServer Pages in 21 Days (Paperback)
by Steven Holzner (Author), Steve Holzner (Author)
# Publisher: Sams; 1st edition (September 19, 2002)
# Language: English
# ISBN-10: 0672324490
# ISBN-13: 978-0672324499
-->
<%@ page import="javax.xml.parsers.*, org.xml.sax.*, org.xml.sax.helpers.*, org.w3c.dom.*, java.io.*"
%>
<%!
public class xparser
{
String displayStrings[] = new String[1000];
int numberDisplayLines = 0;
public String[] displayDocument(String uri)
{
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {}
Document document = null;
document = db.parse(uri);
numberDisplayLines = 0;
display(document, "");
} catch (Exception e) {
e.printStackTrace(System.err);
}
return displayStrings;
}
public void display(Node node, String indent)
{
if (node == null) {
return;
}
int type = node.getNodeType();
switch (type) {
case Node.DOCUMENT_NODE: {
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<?xml version=\"1.0\" encoding=\""+
"UTF-8" + "\"?>";
numberDisplayLines++;
display(((Document)node).getDocumentElement(), "");
break;
}
case Node.ELEMENT_NODE: {
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<";
displayStrings[numberDisplayLines] += node.getNodeName();
int length = (node.getAttributes() != null) ? node.getAttributes().getLength() : 0;
Attr attributes[] = new Attr[length];
for (int i = 0; i < length; i++) {
attributes[i] = (Attr)node.getAttributes().item(i);
}
for (int i = 0; i < attributes.length; i++) {
Attr attribute = attributes[i];
displayStrings[numberDisplayLines] += " ";
displayStrings[numberDisplayLines] += attribute.getNodeName();
displayStrings[numberDisplayLines] += "=\"";
displayStrings[numberDisplayLines] += attribute.getNodeValue();
displayStrings[numberDisplayLines] += "\"";
}
displayStrings[numberDisplayLines] += ">";
numberDisplayLines++;
NodeList childNodes = node.getChildNodes();
if (childNodes != null) {
length = childNodes.getLength();
indent += " ";
for (int i = 0; i < length; i++ ) {
display(childNodes.item(i), indent);
}
}
break;
}
case Node.CDATA_SECTION_NODE: {
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<![CDATA[";
displayStrings[numberDisplayLines] += node.getNodeValue();
displayStrings[numberDisplayLines] += "]]>";
numberDisplayLines++;
break;
}
case Node.TEXT_NODE: {
displayStrings[numberDisplayLines] = indent;
String newText = node.getNodeValue().trim();
if(newText.indexOf("\n") < 0 && newText.length() > 0) {
displayStrings[numberDisplayLines] += newText;
numberDisplayLines++;
}
break;
}
case Node.PROCESSING_INSTRUCTION_NODE: {
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<?";
displayStrings[numberDisplayLines] += node.getNodeName();
String text = node.getNodeValue();
if (text != null && text.length() > 0) {
displayStrings[numberDisplayLines] += text;
}
displayStrings[numberDisplayLines] += "?>";
numberDisplayLines++;
break;
}
}
if (type == Node.ELEMENT_NODE) {
displayStrings[numberDisplayLines] = indent.substring(0, indent.length() - 24);
displayStrings[numberDisplayLines] += "</";
displayStrings[numberDisplayLines] += node.getNodeName();
displayStrings[numberDisplayLines] += ">";
numberDisplayLines++;
indent += " ";
}
}
}
%>
<HTML>
<HEAD>
<TITLE>Parsing an XML Document With DOM</TITLE>
</HEAD>
<BODY>
<h1>Parsing an XML Document With DOM</h1>
<% xparser p = new xparser();
String[] s = p.displayDocument(application.getRealPath("/") + "test.xml");
for(int i = 0; i < s.length; i++){
if(s[i] != null){
%>
<%= s[i] %><BR>
<%
}
}
%>
</BODY>
</HTML>
发表评论
-
学JFreeChart不得不看的中文API
2011-09-26 11:03 390学JFreeChart不得不看的 ... -
一些关于AXIS类的方法:
2011-09-26 11:02 597一些关于AXIS类的方法: Axis类: void s ... -
JAVA基础--JAVA中的反射机制详解
2010-09-14 16:20 594JAVA反射机制 JAVA反射机制是在运 ... -
面向接口编程详解(三)——模式研究
2010-09-14 14:01 791通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定 ... -
面向接口编程详解(二)——编程实例
2010-09-14 14:00 729通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一 ... -
奇偶列變換底色
2010-09-13 15:09 889報表的奇數列與偶數列以不同的背景色彩呈現是常見的報表格式, ... -
Unknown hyperlink target 0
2010-09-13 15:00 2227错误的原因可以查看 工具生成的报表和 类报表的jar是否 ... -
赋值运算符
2010-08-26 11:44 514public class MainClass { publ ...
相关推荐
使用DOM解析器,首先需要导入`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类。下面是一个简单的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....
DOM是一种独立于语言和平台的XML解析模型。给出了支持DOM核心模型和多种DOM扩展规范的XML编辑器ONCEXMLEditor的实现。ONCEXMLEditor具有高效的XML验证和序列化性能,同时提供给用户多种功能,包括按需遍历文档、提供上...
本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...
1. DOM解析器:DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中形成一个文档对象模型,允许开发者通过节点遍历、查找和修改XML内容。这种解析方式的优点在于可以方便地对XML进行任意位置的操作,...
在JSP中使用SAX解析,需要实现SAX解析器的事件监听接口,如`DefaultHandler`,并在解析过程中处理相应的事件。例如,当解析器遇到`<Name>`元素时,会调用`startElement`方法,开发者可以在该方法中记录或处理数据。 ...
在Java中,可以使用`java.io`包中的类如`FileInputStream`来打开文件,然后使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`来创建DOM解析器实例并解析XML文件。解析完成后,`Document`对象将...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,便于遍历和访问;而SAX解析器则采用事件驱动模型,逐行读取,节省内存但处理复杂文档时效率较低。对于大规模成绩数据,建议使用SAX。 3. **JSP与数据库存储...
XML(eXtensible Markup Language)在此系统中扮演了数据存储和解析的重要角色,这里我们主要采用DOM4J库进行XML处理。 1. JSP与Servlet基础: JSP是Java Web应用中的视图层技术,它允许开发者将HTML代码和Java...
以下是一个简单的示例,展示了如何使用Java的DOM解析器实现XML的增删查改: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; ...
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 但是他不支持JSP页面,例如不支持: 1、; ...
DOM解析器会一次性加载整个XML文档到内存中,形成一个完整的树形结构,允许开发者通过遍历树来访问任何节点。这种解析方式方便了数据的修改和查询,但缺点是对内存和CPU的要求较高,不适合处理大型XML文件。 2. SAX...
DOM解析器会构建整个文档的结构,允许开发者通过遍历树形结构来访问或修改数据。在JSP中,可以使用DOM API来读取XML文件内容,如获取指定元素、属性等,并实现向XML文件中写入新的数据信息。 除了DOM,JDOM也是一个...
- DOM解析器可以方便地修改XML文档,如添加、删除或更新元素和属性。例如,增加一个元素: ```java Element newElement = doc.createElement("newElement"); doc.getDocumentElement().appendChild(newElement)...
本文对四种主流的 XML 文件解析方案进行了比较,包括 DOM(JAXP Crimson 解析器)、SAX(JAXP Crimson 解析器)、JDOM 和 dom4j。比较的结果表明,DOM 解析方式具有较高的解析速度,但占用较高的内存,而 SAX 解析...
2. **DOM解析**:DOM解析器将XML文档转化为内存中的对象结构,开发者可以使用编程语言(如JavaScript、C#或Java)通过DOM API来查找、修改、添加和删除节点。理解DOM树的概念,掌握节点遍历和操作的方法,是使用DOM...
但是,由于JSTL的XML标签库并不支持所有XML操作,对于更复杂的解析需求,可能需要借助Java代码,比如创建一个DOM解析器实例,或者使用SAX解析器逐事件处理XML流。 在实际应用中,我们还需要关注**安全性**和**错误...
JSP通过DOM或SAX解析器来读取和解析XML,将数据展示在网页上或用于其他业务逻辑。 综上所述,这个项目涵盖了以下核心知识点: 1. **JSP**:Java Server Pages,用于创建动态网页的技术,结合Java Servlet和...
解析器分为两种主要类型:DOM(Document Object Model)和SAX(Simple API for XML)。 DOM是一种基于对象的API,由W3C制定为官方标准。它将XML文档转换为一棵树形结构,每个节点代表XML文档的一个部分,使得开发者...