使用Java读取XML中标记所包含的多个数据

时间:2013-09-03 12:57:41

标签: java xml xml-parsing

我知道有几个关于将XML数据读入Java的问题,但我见过的所有问题都没有我需要的答案。 (我对XML术语知之甚少)我有一堆我需要的数据似乎包含在标签中。例如:

<powerplay ppg="28" ppopp="176" pppct=".159" pk="171" pkopp="193" pkpct=".886"/>

我希望能够将这些数字存储为我的信息。任何信息都将不胜感激。

注意:“powerplay”标签用

括起来
<team......../team>

标签,通过DOM将我的程序引导到这个特定的行是否很简单?

谢谢!

3 个答案:

答案 0 :(得分:0)

您是否尝试过org.w3c.dom套餐?它是JAVA JDK的一部分,因此您不需要任何其他库。我自己使用它,必须说它不是很复杂。您可以在此处找到的使用示例here以及您将找到的API here

答案 1 :(得分:0)

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

//given that the doc is your xml file
public NodeList getMainInfo(Document doc) {
    NodeList feed = doc.getElementsByTagName("powerplay");
    Node feedElement = feed.item(0);
    NodeList info = feedElement.getChildNodes();
    return info;
}

public String getPPG(NodeList info){
    Element powerplay = (Element) info;
    return info.getAttribute("ppg");
}

public String getPPOPP(NodeList info){
    Element powerplay = (Element) info;
    return info.getAttribute("ppopp");
}

答案 2 :(得分:0)

如果使用Java SAX(tutorial)解析XML,则可以通过startElement()回调中的属性对象来获取属性。 Attributes相当容易操作 - 如果您知道所需属性的名称,则只需调用getValue()就可以获取它。

这是一个很好的解决方案,用于访问Java中的XML数据,我强烈推荐它。

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

    if (qName.equals("powerplay")) {
        // Utilize attributes object to get your attributes.
    }
}

在上面的例子中,我们让处理程序检查给定元素是否是powerplay元素,然后相应地处理它的属性。

SAX解析器的一大优点是它不会将您正在解析的文档加载到内存中。如果您无法控制文档大小或预计文档大小非常大,这是一件非常非常好的事情。