java - Android xml获取节点值null

标签 java android soap android-xml

我有一个 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();
    }


}

我的目标最终是读取值并转换为ArrayList

最佳答案

听起来您正在尝试获取 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);
}

关于java - Android xml获取节点值null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388010/

相关文章:

java - 套接字始终打开还是仅在需要时打开?

android - Google-cast v3 自定义命名空间

java - 使用 wsdl 生成的 java 对象发出 soap 请求时如何添加 soap header

java - 将 UsernameToken (WS-Security-Header) 添加到 SOAP 消息

java - 将带有逗号 ','的xml内容写入csv

java - 如何让我用java编写的程序知道某些文件类型?

java - java maven 项目中的 stanford NLP API 错误

android - DialogFragment 已触发,但未在 Navigation Architecture 组件中显示布局

android - 如何使用Android API以编程方式启动Instrumentation项目? (指定测试类(class)!)

soap - 真正的 SOAP 互操作性是神话吗?