Добрый день
Возникла проблема. Есть сервис, который возвращает xml следующего вида
<?xml version="1.0" encoding="windows-1251"?>
<response>
<status group="Group1">OK</status>
<status group="Group2">OK</status>
<status group="Group3">InProgress</status>
<status group="Group4">ToDo</status>
<status group="Group5">Closed</status>
<status group="Group6">Done</status>
<status group="Group7">OK</status>
<status group="Group8">OK</status>
<status group="Group9">OK</status>
<status group="Group10">OK</status>
<status group="Group11">OK</status>
<status group="Group12">OK</status>
<status group="Group13">OK</status>
<status group="Group14">OK</status>
</response>
Задача в том, чтобы для каждой группы получить статус
Но у меня не получается правильно спарсить значения. Регулярка и JavaDOM возвращает только первое значение. Ниже мой вариант решения:
HashMap<String,String> map = new HashMap<String,String>();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
StringBuilder xmlStringBuilder = new StringBuilder();
xmlStringBuilder.append(response); // сюда подставляю ответ
ByteArrayInputStream input = new ByteArrayInputStream(xmlStringBuilder
.toString()
.getBytes("UTF-8"));
Document doc = builder.parse(input);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("status");
for(int temp = 0; temp < nodeList.getLength(); temp++){
Node nNode = nodeList.item(temp);
System.out.println(nNode.getTextContent());
if(nNode.getNodeType() == Node.ELEMENT_NODE) {
System.out.println("MAP BUILDING");
Element eElement = (Element) nNode;
System.out.println(eElement.getTextContent());
map.put(eElement.getAttribute("group"),
eElement.getElementsByTagName("status").item(0).getTextContent());
System.out.println("Group: " + eElement.getAttribute("group"));
System.out.println("Status: " + eElement.getElementsByTagName("status").item(0).getTextContent());
}
}
} catch(Exception e){
System.out.println("Exception"+e);
}
Думаю удобнее будет все в HashMap засунуть чтобы потом использовать в проекте.
Спасибо заранее