Как читать XML-документ с URL

1

Привет, я работаю с классом документов. Когда я читаю файл из локальной системы, он работает, и когда я хочу прочитать файл и попытаться загрузить XML-документ с некоторого URL-адреса, он не работает.

private static Document loadTestDocument(String fileLocation) throws Exception {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder db = factory.newDocumentBuilder();
    File file = new File(fileLocation);
    System.out.println(db.parse(file).toString());
    return  db.parse(file);
}

Таким образом, этот метод возвращает Document, если у меня есть служба, которая возвращает xml, и я хочу ее использовать, как я могу это сделать, я хочу напрямую загрузить с сервиса GET url.

Я пытался с этим, но не работал

File file = new File("http://someservice/getdata");

Ошибка: файл не найден. Затем я попытался загрузить его из Input Stream, который он также не работал у меня.

InputStream input = new URL("http://someurl:32643/api/values").openStream();

Ошибка:

[Fatal Error] :1:1: Content is not allowed in prolog.

Теперь, как я могу достичь этого, любая помощь будет оценена. Я хочу загрузить данные, полученные от службы, и хочу вернуть Документ, поскольку я возвращаюсь в свой метод.

Теги:
xml-parsing
java-ee
saxparser
domparser

1 ответ

1
Лучший ответ

Следующий код работает для меня.

TestXML.java

import java.net.URL;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;

public class TestXML {

    private static Document loadTestDocument(String url) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        return factory.newDocumentBuilder().parse(new URL(url).openStream());
    }

    public static void main(String[] args) throws Exception {
        Document doc = loadTestDocument("http://www.enetpulse.com/wp-content/uploads/sample_xml_feed_enetpulse_soccer.xml");
        System.out.println(doc);
        doc = loadTestDocument("http://localhost/array.xml");
        System.out.println(doc);
    }
}

array.xml

<?xml version="1.0"?>
<ArrayOfstring xmlns:i="w3.org/2001/XMLSchema-instance" xmlns="schemas.microsoft.com/2003/10/Serialization/Arrays">
    <string>value1</string> 
    <string>value2</string> 
</ArrayOfstring>

Вам действительно нужно/использовать атрибуты xmlns?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню