2008-12-05 2 views
2

У меня есть этот код:Невозможно разобрать XML файл с помощью DocumentBuilder

if (file.exists()) { 
    Document doc = builder.parse(file); 
    NodeList list = doc.getElementsByTagName("property"); 
    System.out.println("XML Elements: "); 
    for (int ii = 0; ii < list.getLength(); ii++) { 

линия 2 дает следующее исключение

 
E:\workspace\test\testDomain\src\com\test\ins\nxg\maps\Right.hbm.xml 
...***java.net.SocketException: Operation timed out: connect:could be due to invalid address 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:372) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:233) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:220) 

ответ

9

Parhaps DocumentBuilder безуспешно пытается получить доступ к DTD через сетевой разъем для вашего XML-документ?

Если в документе XML есть ссылки DTD, попробуйте отредактировать их, чтобы доказать причину.

Если это исправляет вашу проблему, я думаю, вы можете использовать EntityResolver для более постоянного решения, но я не сделал этого сам.

+1

Решение EntityResolver находится здесь: http://stackoverflow.com/questions/243728/ – Tomalak 2008-12-05 10:56:41

0

Попробуйте упростить свою задачу.

Можете ли вы получить код, вы должны разобрать вручную?

Если да, попробуйте разобрать его. Я не думаю, что это проблема вашего DocumentBuilder, но вашего сетевого подключения. Поэтому вы должны убедиться, что DocumentBuilder имеет доступ к каждому биту документа xml.

Если ваш документ, хранящийся вручную, завершился с ошибкой при его проверке, появится другое сообщение об ошибке.

Надеюсь, это поможет.

0

Создал новый экземпляр DocumentBuilderFactory, а затем создал новыйDocumentBuilder, прежде чем разбирать файл?

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(file); 

Надеюсь, что это link помогает. Это определенно помогло мне сегодня.

0

Ответ от Brabster очень полезен для меня. В моем случае у меня есть XML-документ, начинающийся с

<?xml version="1.0"?> <!DOCTYPE GBSet PUBLIC "-//NCBI//NCBI GBSeq/EN" http://www.ncbi.nlm.nih.gov/dtd/NCBI_GBSeq.dtd"> ... more to come 

Это вызвало проблему для DocumentBuilder. У меня проблема тайм-аута. Истинное зло в содержании URL: http://www.ncbi.nlm.nih.gov/dtd/NCBI_GBSeq.dtd:

<!-- ============================================ 
::DATATOOL:: Generated from "gbseq.asn" 
::DATATOOL:: by application DATATOOL version 1.5.0 
::DATATOOL:: on 06/06/2006 23:03:48 
============================================ --> 

<!-- NCBI_GBSeq.dtd 
This file is built from a series of basic modules. 
The actual ELEMENT and ENTITY declarations are in the modules. 
This file is used to put them together. 
--> 

<!ENTITY % NCBI_Entity_module PUBLIC "-//NCBI//NCBI Entity Module//EN" 
"NCBI_Entity.mod.dtd"> %NCBI_Entity_module; 

<!ENTITY % NCBI_GBSeq_module PUBLIC "-//NCBI//NCBI GBSeq Module//EN" "NCBI_GBSeq.mod.dtd"> %NCBI_GBSeq_module; 

После удаления

<!DOCTYPE GBSet PUBLIC "-//NCBI//NCBI GBSeq/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_GBSeq.dtd"> 

Моя программа может по крайней мере, двигаться вперед!

Смежные вопросы