【问题标题】:How to get attribute value from xml in android/Java如何在android/Java中从xml获取属性值
【发布时间】:2026-02-07 00:45:01
【问题描述】:

我有这种格式的xml

  String xml = "<contact xmlns='com:your:ext:namespace'><phonenumber1>12345675</phonenumber1>           <phonenumber2>56738903</phonenumber2></contact>";

   Document doc = null;
            try {
                InputStream in = new ByteArrayInputStream(xml.getBytes("utf-8"));
                doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            } catch (SAXException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (ParserConfigurationException e1) {
                e1.printStackTrace();
            }

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
        } catch (ParserConfigurationException e1) {
            e1.printStackTrace();
        }
        doc.getDocumentElement().normalize();
        System.out.println("Root element " + doc.getDocumentElement().getNodeName());

        NodeList nodeList = doc.getElementsByTagName("*");
        for (int i = 0; i < nodeList.getLength(); i++) {
        // Get element
        Element element = (Element) nodeList.item(i);
        //System.out.println(element.getNodeName());

        Node nNode = nodeList.item(i);

        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element eElement = (Element) nNode;

            System.out.println("attribute tags: " + eElement.getTagName());
        }

}

我正在使用上面的代码来获取属性值。 获取属性名称 但无法获取属性值 请帮帮我,我是这里的结构

提前致谢

纳雷什拉瓦

【问题讨论】:

    标签: java android xml dom


    【解决方案1】:

    在您的 xml 中,没有任何元素具有 "Name" 属性,因此它无法返回您一个。

    从您的代码末尾判断,您可能希望使用 getTagName() 方法来获取元素名称,而不是 (phonenumber1) 是标签名称而不是其属性。

    你的

    NodeList nodeList = doc.getElementsByTagName("*");
    

    已经包含 phonenumber1 的元素,...您可以将它们识别为电话标签,例如:

    Element elm = (Elemetn) nNode;
    if (elm.getTagName().startsWith("phone"))
       phone = elm.getTextContent();
    

    【讨论】:

    • 根元素联系人联系人属性标签:phonenumber1 属性标签:phonenumber2 如果在简单的 java 类中运行它,我会得到这样的 o/p,你遇到了我的问题。
    • phonenumber1,phonenumber1不是属性,是子元素,是标签。它们不是由 getAttribute 方法返回的
    • ok Thanq 我必须做些什么来获取 phonenumber1 和 phonenumber2 ....etc 值
    • nodeList.item(i).getChildNodes().item(0).getTextContent();我可以用这个吗
    • 如果您使用 *,它们已经在您的 nodeList 中,是的,getTextContent 将返回 phonenumber 值,请参阅更新。