Какие фреймворки для анализа ответа службы REST?

#java #xml #json #frameworks

#java #xml #json #фреймворки

Вопрос:

Я использую веб-сервис REST для извлечения некоторых данных. В качестве ответа я получаю несколько длинных xml или других файлов. Часть этого может выглядеть, например, так:

 <jfs:jauthRevokeTokenUrl
      rdf:resource="https://localhost:9443/jts/jauth-revoke-token" />

  <jfs:jauthCheckAuthUrl
      rdf:resource="https://localhost:9443/jts/jauth-check-auth" />

  <jfs:jauthProxyUrl
      rdf:resource="https://localhost:9443/jts/jauth-proxy" />

  <jfs:jauthSigninUrl
      rdf:resource="https://localhost:9443/jts/jauth-signin" />
  

Если я теперь хочу получить значение rdf:resource , например, узла jfs:jautSigningURL , какой фреймворк Java я могу использовать для этого? А что, если ответ не xml, а json? Какие фреймворки я могу использовать тогда? Или я должен кодировать это самостоятельно?

Ответ №1:

Если вы хотите избежать каких-либо больших фреймворков, вы можете посмотреть встроенные инструменты java для синтаксического анализа XML

Вот пример, предполагающий, что у вас есть XML строковая переменная

  DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

 DocumentBuilder db = documentBuilderFactory.newDocumentBuilder();
 InputStream inputStream = new ByteArrayInputStream(XML.getBytes());
 Document parsed = db.parse(inputStream);

 parsed.getDocumentElement().normalize();
 Node tag = parsed.getElementsByTagName("jfs:jauthSigninUrl").item(0);
 String value = tag.getAttributes().getNamedItem("rdf:resource").getNodeValue();
  

Вы могли бы дополнительно уточнить это, включив определения пространства имен, проверки null и, возможно, упростив его с помощью выражения XPath, например

  XPath xpath = XPathFactory.newInstance().newXPath();
 String value = xpath.evaluate("//jauthSigninUrl/@resource", parsed); 
  

Смотрите Здесь Java XML XPATH

Ответ №2:

возможно, вы захотите рассмотреть Apache Tika, он может помочь вам читать и анализировать многие форматы (включая, но не ограничиваясь ими, XML, json)..

здесь json можно рассматривать как обычный текстовый файл и правильно анализировать с помощью Json