Как читать XML-ответ от URL-адреса в java?

Мне нужно написать простую функцию, которая принимает URL-адрес и обрабатывает ответ, который представляет собой XML или JSON, я проверил веб-сайт Sun https://swingx-ws.dev.java.net/servlets/ProjectDocumentList , но объект HttpRequest нигде, можно ли это сделать на Java? Я напишу богатое клиентское приложение.

Для анализа xml входного streamа вы можете:

// the SAX way: XMLReader myReader = XMLReaderFactory.createXMLReader(); myReader.setContentHandler(handler); myReader.parse(new InputSource(new URL(url).openStream())); // or if you prefer DOM: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new URL(url).openStream()); 

Но для связи через http от сервера к клиенту я предпочитаю использовать hessian library или springs http invoker lib

Если вы хотите распечатать XML непосредственно на экране, вы можете использовать TransformerFactory

 URL url = new URL(urlString); URLConnection conn = url.openConnection(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(conn.getInputStream()); TransformerFactory transformerFactory= TransformerFactory.newInstance(); Transformer xform = transformerFactory.newTransformer(); // that's the default xform; use a stylesheet to get a real one xform.transform(new DOMSource(doc), new StreamResult(System.out)); 

Получите ответ через обычный http-запрос, используя:

  • Apache HttpComponents
  • встроенный URLConnection con = new URL("http://example.com").openConnection() ;

Следующий шаг – parsing. Взгляните на эту статью для выбора парсера.

Если вы специально хотите использовать SwingX-WS , посмотрите на XmlHttpRequest и JSONHttpRequest .

Подробнее об этих classах в блоге XMLHttpRequest и Swing .

Хорошо, я думаю, что решает проблему ниже, это рабочий код

 // package xmlhttp; import org.jdesktop.http.Response; import org.jdesktop.http.Session; import org.jdesktop.http.State; public class GetXmlHttp{ public static void main(String[] args) { getResponse(); } public static void getResponse() { final Session session = new Session(); try { String url="http://192.172.2.23:8080/geoserver/wfs?request=GetFeature&version=1.1.0&outputFormat=GML2&typeName=topp:networkcoverage,topp:tehsil&bbox=73.07846689124875,33.67929015631999,73.07946689124876,33.68029015632,EPSG:4326"; final Response res=session.get(url); boolean notDone=true; do { System.out.print(session.getState().toString()); if(session.getState()==State.DONE) { String xml=res.toString(); System.out.println(xml); notDone=false; } }while(notDone); } catch (Exception e1) { e1.printStackTrace(); } } } в // package xmlhttp; import org.jdesktop.http.Response; import org.jdesktop.http.Session; import org.jdesktop.http.State; public class GetXmlHttp{ public static void main(String[] args) { getResponse(); } public static void getResponse() { final Session session = new Session(); try { String url="http://192.172.2.23:8080/geoserver/wfs?request=GetFeature&version=1.1.0&outputFormat=GML2&typeName=topp:networkcoverage,topp:tehsil&bbox=73.07846689124875,33.67929015631999,73.07946689124876,33.68029015632,EPSG:4326"; final Response res=session.get(url); boolean notDone=true; do { System.out.print(session.getState().toString()); if(session.getState()==State.DONE) { String xml=res.toString(); System.out.println(xml); notDone=false; } }while(notDone); } catch (Exception e1) { e1.printStackTrace(); } } } 

Я обнаружил, что вышеупомянутый ответ вызвал у меня исключение, когда я попытался создать экземпляр парсера. Я нашел следующий код, который разрешил это на http://docstore.mik.ua/orelly/xml/sax2/ch03_02.htm .

 import org.xml.sax.*; import javax.xml.parsers.*; XMLReader parser; try { SAXParserFactory factory; factory = SAXParserFactory.newInstance (); factory.setNamespaceAware (true); parser = factory.newSAXParser ().getXMLReader (); // success! } catch (FactoryConfigurationError err) { System.err.println ("can't create JAXP SAXParserFactory, " + err.getMessage ()); } catch (ParserConfigurationException err) { System.err.println ("can't create XMLReader with namespaces, " + err.getMessage ()); } catch (SAXException err) { System.err.println ("Hmm, SAXException, " + err.getMessage ()); } 

Этот код предназначен для анализа XML-обертывания JSON Response и отображения в интерфейсе с помощью ajax.

 Required JavaScript code. 
  
  • Можно ли заполнить ListView снизу?
  • Ссылка на строку в ресурсе массива строк с помощью xml
  • Поместите кнопки внизу экрана с помощью LinearLayout?
  • Использование XSL-FO, CSS3 вместо CSS2 для создания разбитых на страницы документов, таких как PDF?
  • Сериализация объекта как XML UTF-8 в .NET.
  • xsl: как разбить строки?
  • FileMode.Open и FileMode.OpenOrCreate разница, когда файл существует? c # ошибка?
  • XPath выбирает все элементы между двумя конкретными элементами
  • Проигрыватель Android XML
  • java.util.Date для XMLGregorianCalendar
  • В чем разница между xsd: include и xsd: import?
  • Interesting Posts

    Заполнить базу данных Android из файла CSV?

    Как найти новейшие файлы в каталоге, включая подкаталоги?

    ASP.NET MVC: создан ли controller для каждого запроса?

    Определить имена таблиц и столбцов в качестве аргументов в функции plpgsql?

    Как я могу определить только gradleиент для подграфа Tensorflow?

    Обнаружение столкновения сложными формами

    Почему не удается выполнить итерацию карт в порядке ввода?

    Могу ли я сделать резервную копию своего ПК, а затем спать по требованию с помощью WHS?

    Насколько постоянным является локальное хранилище на Android и iOS?

    Консоль администратора Glassfish вызывает java.lang.IllegalStateException при создании пула JDBC

    Как получить строку json из url?

    Являются ли сервер доменных имен и сервер имен одинаковыми?

    Как разместить / использовать частный трекер

    Увеличение максимального количества подключений Google Chrome на сервер до более чем 6

    Субдомены для сервера за NAT

    Давайте будем гением компьютера.