Android xml get node value null

у меня есть xml

<DatosClientes>
   <User>Prueba</User>
    <intUserNumber>1487</intUserNumber>
    <IdUser>1328</IdUser>
</DatosClientes>

Как читать данные в android ? при выполнении все время возвращать null в значение узла

public static void Parse(String response){
    try{
        DocumentBuilderFactory dbf = DocumentBuilderFactory
                .newInstance();

        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(response));

        Document doc = db.parse(is);
        doc.getDocumentElement().normalize();

        NodeList datos = doc.getElementsByTagName("DatosClientes");

        XmlParse parser = new XmlParse();

        for (int i = 0; i < datos.getLength(); i++) {


            Node node = datos.item(i);
            Element fstElmnt = (Element) node;
            NodeList nameList = fstElmnt.getElementsByTagName("User");

            Log.e("log",String.valueOf(nameList.item(0).getNodeValue()));
        }
    }catch (Exception e){
        e.printStackTrace();
    }


}

мой objetive, наконец, значение чтения и преобразования в ArrayList

1 ответ

  1. Похоже, вы пытаетесь получить список значений в XML? То есть вы хотите:

    { "Prueba", "1487", "1328" }
    

    Для этого вы можете сделать что-то вроде:

    public static final String XML_CONTENT =
        "<DatosClientes>"
        + "<User>Prueba</User>"
        + "<intUserNumber>1487</intUserNumber>"
        + "<IdUser>1328</IdUser>"
        + "</DatosClientes>";
    
    public static final Element getRootNode(final String xml) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new InputSource(new StringReader(xml)));
    
            return document.getDocumentElement();
        } catch (ParserConfigurationException | SAXException | IOException exception) {
            System.err.println(exception.getMessage());
            return null;
        }
    }
    
    public static final List<String> getValuesFromXml(final String xmlContent) {
        Element root = getRootNode(xmlContent);
        NodeList nodes = root.getElementsByTagName("*");
        List<String> values = new ArrayList<>();
    
        for (int index = 0; index < nodes.getLength(); index++) {
            final String nodeValue = nodes.item(index).getTextContent();
            values.add(nodeValue);
            System.out.println(nodeValue);
        }
    
        return values;
    }
    
    public static void main (String[] args) {
        final List<String> nodeValues = getValuesFromXml(XML_CONTENT);
    }