Мне нужно проанализировать данные XML, возвращаемые при доступе к службе на основе REST, для отображения только одного тега. Например, проанализируйте данные XML, показанные ниже, чтобы отобразить тег имени и значение только для Джона.
<company>
<staff>
<firstname>John</firstname>
<lastname>Doe</lastname>
</staff>
</company>
Я изо всех сил пытаюсь выяснить, как взаимодействовать с кодом синтаксического анализа SAX, когда RESTClient возвращает данные XML. Я попробовал разные подходы после изучения различных примеров кода, но все еще не могу понять это частично, потому что они не имеют одинакового точного назначения. Поэтому, пожалуйста, научите меня, как вызывать / передавать данные в код синтаксического анализа и что возвращать из кода синтаксического анализа, должен ли код синтаксического анализа находиться в отдельном классе и т. Д. Я в основном не знаю, без каких-либо указаний. Соответствующий код RESTClient представлен ниже. Спасибо!
public class RESTClient {
public static String callRESTService(String url) {
String result = null;
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if (entity != null) {
InputStream instream = entity.getContent();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp;
try (
sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
DefaultHandler handler = new DefaultHandler();
xr.setContentHandler(handler);
InputSource is = new InputSource(instream);
xr.parse(is);
//what should/can be returned here from the parsing code:
//String, InputSource, InputStream?. Convert data type?
}
catch (SAXException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
)