#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