SAXParseException, когда URL не существует - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь проанализировать xml, используя DocumentBuilder parse метод, который принимает URI в качестве аргумента. Для этого я создаю объект String, представляющий URI, а затем вызываю метод parse, передавая объект String в качестве аргумента.

Вызов метода parse работает нормально, возвращает новый объект DOM. Однако, когда я пытаюсь напечатать возвращенный объект DOM, он говорит:

org.xml.sax.SAXParseException: разметка в документе после корневого элемента должна быть правильно сформирована. Фрагмент кода для разбора xml показан ниже:

String sURL="http://host:port/myapp/myfile.xml";   
DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();      
doc = dBuilder.parse(sURL);

Однако, если URL не существует, метод синтаксического анализа все еще возвращает

org.xml.sax.SAXParseException: разметка в документе следующая корневой элемент должен быть правильно сформирован.

xml - это обычный xml, как показано ниже:

    <?xml version="1.0" encoding="utf-8"?>
<Data>
    <ColorMessages>
        <Message Color="RED">Warning: The batch color level is red. Please check it out!</Message>
        <Message Color="YELLOW">Alert: This batch color level is yellow. Please stay on alert!</Message>
        <Message Color="GREEN">Cool: The batch color level is green. Nice!</Message>
        <Message Color="BLUE">Excellent: The batch color level is blue. Great job!</Message>
    </ColorMessages>
</Data>

Есть ли у вас какие-либо мысли о том, как определить несуществующий URL-адрес во время вызова метода parse?

Спасибо.

1 Ответ

2 голосов
/ 15 декабря 2011

Лично я предпочитаю настроить сетевое соединение или открыть файл самостоятельно и просто передать поток в подсистему xml. Это немного больше работы, но вы можете контролировать то, что происходит. то есть вы не зависите от того, что кто-то считал хорошей идеей в этой ситуации.

Когда вы делаете это, вам также нужно убедиться, что вы закрыли потоки. Биты XML ниже не предполагают, что это то, что вы хотите.

...