На самом деле, не пытаясь сделать это самостоятельно, я рекомендую попытаться проанализировать XML, а не пытаться прочитать его из буфера. Чтобы сделать это очень подробно, вам нужно знать древовидную структуру XML, потому что вы будете читать на основе Nodes
. Например:
// Data members
private URL URL;
private InputStream stream;
private DocumentBuilder builder;
private Document document;
private Element root;
private NodeList nodeList;
URL = new URL(url); // The URL of the site you posted goes here.
stream = URL.openStream();
// Set up and initialize the document.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
builder = dbf.newDocumentBuilder();
document = builder.parse(stream);
document.getDocumentElement().normalize();
root = document.getDocumentElement();
nodeList = root.getChildNodes();
// The number of calls to 'getFirstChild()' will vary with the complexity of
// your XML tree. Also, 'i' could vary as well, depending on which Node off
// of the root you want to access.
String number = nodeList.item(i).getFirstChild().getFirstChild().getNodeValue();
Это может показаться очень запутанным, но позвольте мне привести пример в XML.
<Building>
<name>Train Station</name>
<address>8 Main Street</address>
<color>Blue</color>
</Building>
<Building>
<name>Drugstore</name>
<address>14 Howard Boulevard</address>
<color>Yellow</color>
</Building>
Каждое здание будет представлять другое значение, передаваемое в качестве параметра .item (i). Чтобы получить доступ к информации о первом Building, передайте значение 0. Доступ к дочерним элементам Building осуществляется с помощью метода .getFirstChild (), но он возвращает только Node. Если вам нужен текст «Аптека», вам нужно будет перейти по дереву XML к данным первого потомка второго элемента, например. nodeList.item(1).getFirstChild().getNodeValue();
Надеюсь, это помогло !!