1

我在用 Java (Android) 解析 XML 文件时遇到了一个小问题。

我有一个这样的 XML 文件:

<Events>
  <Event Name="Olympus Has Fallen">
    ...
  </Event>
  <Event Name="Iron Man 3">
    ...
  </Event>
</Events>

我已经设法通过这样做获得了 NodeList:

URL url = new URL("********");

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();

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

我也设法通过这样做获得了 NodeList 的每一项:

for (int i = 0; i < nodeList.getLength(); i++) {
    // Item
    Node node = nodeList.item(i);
    Log.i("film", node.getNodeName());
}

但这只是 Logs: "Event" 而不是 Name 标签的值。如何从 XML 中输出此“名称”标签的值。

谁能帮我解决这个问题?提前致谢!

4

1 回答 1

6

但这只是 Logs: "Event" 而不是 Name 标签的值。

是的,因为您要询问元素的名称。没有Name“标签” - 有一个Name 属性,这就是你应该找到的:

// Only check in elements, and only those which actually have attributes.
if (node.hasAttributes()) {
    NamedNodeMap attributes = node.getAttributes();
    Node nameAttribute = attributes.getNamedItem("Name");
    if (nameAttribute != null) {
        System.out.println("Name attribute: " + nameAttribute.getTextContent());
    }
}

(准确的术语非常重要 - 了解节点、元素、属性等之间的区别是值得的。无论是在与他人交流时,还是在寻找要调用的正确 API 位时,它都会为您提供极大的帮助。)

于 2013-05-17T08:41:40.253 回答