`
woshizn
  • 浏览: 209767 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

在断网的情况下dom解析xml报错

    博客分类:
  • Java
阅读更多

今天因为项目需要,需要解析jetty配置文件jetty.xml。

因为是在无网的情况下做的程序,结果一来就报个错,百思不得其解。

错误信息如下:

java.net.UnknownHostException: jetty.mortbay.org
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    at com.dir.MyDomXmlReader.<init>(MyDomXmlReader.java:46)
    at com.dir.SystemFileMove.moveSystemFile(SystemFileMove.java:18)
    at com.dir.run.main(run.java:8)
 

 

后来上google搜索,却没有找到什么解决办法。

后来几经折磨,终于判断为找不到dtd文件导致。

 

再次上网找寻解决办法如下,在方法中加入注释部分,即可。

其中的

String dtd_uri = "configure_1_2.xml";

为从xml描述里dtd uri 下载到的文件,存放在本地与类同一个目录下。

这样在断网的情况下运行,也不会报错了。

 

package com.dir;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class MyDomXmlReader {

	private List<List> _systemPath = new ArrayList<List>();

	public MyDomXmlReader() {

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			// 通过文档构建器工厂获取一个文档构建器
			DocumentBuilder db = dbf.newDocumentBuilder();

//			db.setEntityResolver(new EntityResolver() {
//				public InputSource resolveEntity(String publicId,
//						String systemId) throws SAXException, IOException {
//
//					String dtd_uri = "configure_1_2.xml";
//					InputStream dtd_stream = this.getClass()
//							.getResourceAsStream(dtd_uri);
//					return new InputSource(dtd_stream);
//
//				}
//			});

			File f = new File("D:/work/cqjyj/develope/etc/jetty.xml");

			// 通过文档通过文档构建器构建一个文档实例
			Document doc = db.parse(f);

			NodeList configureNodeList = doc.getElementsByTagName("Configure");
			Node configureNode;

			if (configureNodeList.getLength() == 1) {
				configureNode = configureNodeList.item(0);
			} else {
				throw new Exception();
			}

			NodeList nodeCallList = configureNode.getChildNodes();

			int nodeCallSize = nodeCallList.getLength();

			Node nodeCall;
			NodeList childsOfNodeCallList;
			Node childsOfNodeCall;
			int childsOfNodeCallSize;
			int sum = 0;
			List<String> twoPath;

			for (int i = 0; i < nodeCallSize; i++) {

				twoPath = new ArrayList<String>(2);
				nodeCall = nodeCallList.item(i);

				if ("Call".equals(nodeCall.getNodeName())) {
					if ("addWebApplication".equals(nodeCall.getAttributes()
							.getNamedItem("name").getNodeValue())) {

						childsOfNodeCallList = nodeCall.getChildNodes();
						childsOfNodeCallSize = childsOfNodeCallList.getLength();

						for (int j = 0; j < childsOfNodeCallSize; j++) {

							childsOfNodeCall = childsOfNodeCallList.item(j);

							if ("Arg".equals(childsOfNodeCall.getNodeName())) {
								twoPath.add(childsOfNodeCall.getTextContent());
							}
						}
						_systemPath.add(twoPath);
					}
				}

			}

		} catch (ParserConfigurationException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		} catch (SAXException ex) {
			ex.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public List<List> get_systemPath() {
		return _systemPath;
	}

	public void set_systemPath(List<List> systemPath) {
		_systemPath = systemPath;
	}
}
 

 

分享到:
评论

相关推荐

    用dom解析xml文件

    在处理XML文件时,DOM解析器会将整个XML文档加载到内存中,形成一个完整的节点树,这样我们就可以通过这个树来查找、修改或遍历XML数据。 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    Android Dom解析XML

    本文将深入探讨如何使用DOM(Document Object Model)解析XML在Android应用中的实践。DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因...

    DOM解析xml文件实例讲解

    在Android开发中,DOM(Document Object Model)解析是处理XML文档的一种常见方法,它提供了一种结构化的表示XML文档的方式,并允许开发者通过编程接口与XML数据进行交互。本篇文章将深入探讨DOM解析XML文件在...

    DOM解析XML文件例子

    但需要注意,DOM解析在处理大型XML文件时可能会消耗大量内存,因此在资源有限的环境下,可能需要考虑使用更轻量级的解析方式,如SAX解析。 总结来说,DOM解析XML文件是一种常见的数据处理技术,通过构建内存中的DOM...

    DOM解析XML应用实例(入门经典案例)

    在“徐守威”的指导下,这个入门案例将帮助你理解DOM解析XML的基本概念,并通过实际操作提升技能。同时,了解并熟练运用DOM解析,对于处理XML格式的数据,如配置文件、数据交换等场景,都将大有裨益。 标签“徐守威...

    java_dom解析xml xml java

    ### Java DOM 解析 XML 在Java中,DOM(Document Object Model)是一种用于处理XML文档的标准接口。通过DOM,我们可以将整个XML文档加载到内存中,并对其进行读取、修改等操作。这种方式非常适合那些需要对XML文档...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    java平台中使用DOM解析xml文件

    在Java平台上,DOM解析器提供了对XML文档的全面和结构化的访问。 使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在...

    dom4j解析XML所需jar包

    在XML解析领域,DOM4J主要涉及以下知识点: 1. **DOM4J API**:DOM4J提供了一组直观的类和接口来操作XML文档,如`Element`代表XML元素,`Attribute`代表属性,`Document`表示整个XML文档,还有`Namespace`处理命名...

    android Dom解析xml文件

    在Android中,我们主要使用Java的标准库`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来实现DOM解析。这些库提供了创建DOM解析器、解析XML文件和操作XML节点的功能。 ### 3. 实现步骤 ####...

    DOM解析XML 创建XML

    DOM解析XML和创建XML是Web开发中的基础技能,尤其在处理动态数据和接口交互时,理解并掌握DOM与XML的结合应用至关重要。在实际项目中,我们可能还需要结合其他技术,如XSLT(用于转换XML)和XPath(用于在XML文档中...

    经典的DOM解析XML范例

    在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整的对象模型,...

    java使用dom解析xml

    在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...

    DOM解析XML文件实例

    以一个实例来说明DOM解析XML文件的方法与过程。

    DOMParser解析xml

    对于这种情况,可以考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等基于事件的解析器,它们不需要一次性加载整个文档到内存。 6. **应用场景**: - 数据交换:XML常用于跨平台、跨语言的数据...

    使用dom4j 和本地dom 解析xml 文件

    在Java中,解析XML文件是常见的任务,通常有DOM(Document Object Model)和DOM4J两种方式。下面我们将详细探讨这两种解析方法。 DOM解析方式是将整个XML文件加载到内存中,形成一棵DOM树,每个节点代表XML文档的一...

    android上使用DOM解析XML

    在Android 4.0及以上版本,我们可以使用内置的Java XML DOM API来实现XML解析。下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,...

    解析XML所需的jar dom.jar

    在Java环境中,处理XML文件通常涉及到DOM(Document Object Model)解析器。"dom.jar"是一个包含Java DOM API实现的库,它是Java标准版(Java SE)的一部分,用于解析XML文档并将其转换为内存中的树形结构。 DOM...

Global site tag (gtag.js) - Google Analytics