1

我正在开发一个 java 类来解析这个 xml 文件:

<document src="xmls/sections/modules/200_1.xml">
<module name="product_info" id="1">
    <product_primary_id>200</product_primary_id>
    <product_section_id>1</product_section_id>
    <product_section_item_id></product_section_item_id>

    <type>1</type>
    <position>1</position>
    <align>top</align>

    <url href="productview/info.html"></url>
</module>
</document>

我有这个java类:

try {
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(contingut);
    doc.getDocumentElement().normalize();
    //loop a cada module
    NodeList nodes = doc.getElementsByTagName("module");
    for (int i = 0; i < nodes.getLength(); i++) {
        Node node = nodes.item(i);
        Element element = (Element) node;
        if(element.getNodeType() == Element.ELEMENT_NODE){
            Log.d("debugging","product_primary_id: "+getValue("product_primary_id",element));
            Log.d("debugging","product_section_id: "+getValue("product_section_id",element));
            //Log.d("debugging","product_section_item_id: "+getValue("product_section_item_id",element));
            Log.d("debugging","type: "+getValue("type",element));
            Log.d("debugging","position: "+getValue("position",element));
            Log.d("debugging","align: "+getValue("align",element));
            //Log.d("debugging","url: "+getValue("url",element));   
        }
    }
} catch (Exception e){
            e.printStackTrace();
}

正如你所看到的,它为每个“模块”标签循环并获取它的子值。但是我需要模块中的名称属性,但是因为它是一个 NodeList,所以不能使用方法getAttribute("name");

任何的想法?

4

2 回答 2

2

你可以做

Element element = (Element) node;
element.getAttribute("name")

检索name代表module标签的节点的属性。您可以这样做,因为module标签本身也是一个元素。该getAttribute()方法记录在这里

于 2013-04-09T08:37:56.647 回答
1
doc.getElementsByTagName("module")

返回具有给定标记名称的元素列表,即模块,当您迭代节点列表时,您必须在 for 语句中使用getAttribute函数。

请参阅http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html#getElementsByTagName%28java.lang.String%29

于 2013-04-09T08:37:26.150 回答