Привет, я работаю с классом документов. Когда я читаю файл из локальной системы, он работает, и когда я хочу прочитать файл и попытаться загрузить 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.
Теперь, как я могу достичь этого, любая помощь будет оценена. Я хочу загрузить данные, полученные от службы, и хочу вернуть Документ, поскольку я возвращаюсь в свой метод.
Следующий код работает для меня.
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?