-1

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

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

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

注意:“powerplay”标签由

<team......../team>

标记,那么通过 DOM 将我的程序定向到该特定行是否简单?

谢谢!

4

3 回答 3

0

你试过org.w3c.dom包吗?它是 JAVA JDK 的一部分,因此您不需要任何额外的库。我自己使用它,必须说它不是很复杂。您可以在此处找到使用示例,您可以在此处找到API

于 2013-09-03T13:07:49.303 回答
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");
}
于 2013-09-03T13:12:22.757 回答
0

如果您使用 Java SAX (教程) 解析 XML,则可以通过利用startElement()回调中的属性对象来获取属性。属性相当容易操作 - 如果您知道所需属性的名称,则只需调用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 解析器的一大优点是它不会将您正在解析的文档加载到内存中。如果您无法控制文档大小或者预计文档的大小会非常大,这是一件非常非常好的事情。

于 2013-09-03T13:12:35.663 回答