java - xml解析器,一项

标签 java xml parsing

我尝试使用以下数据解析 xml 提要:

<company>
<year id="2000">
<quarter id="1" sales="80"/>
</year>

<year id="2001">
<quarter id="1" sales="20"/>
</year>
</company>

是否可以只获取值为 2001 的年份?

我有以下代码:

URL url = new URL(feedUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
     InputStream is = conn.getInputStream();

     //DocumentBuilderFactory, DocumentBuilder are used for 
     //xml parsing
     DocumentBuilderFactory dbf = DocumentBuilderFactory
       .newInstance();
     DocumentBuilder db = dbf.newDocumentBuilder();

     //using db (Document Builder) parse xml data and assign
     //it to Element
     Document document = db.parse(is);
     Element element = document.getDocumentElement();

     //take rss nodes to NodeList
     element.normalize();
     NodeList nodeList =  ???????

最佳答案

您可以使用 XPath API:

import java.io.StringReader;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        String xml = "<company><year id='2000'><quarter id='1' sales='80'/></year><year id='2001'><quarter id='1' sales='20'/></year></company>";
        String xpath = "/company/year[@id=2001]";
        XPath xPath = XPathFactory.newInstance().newXPath();
        Node node = (Node) xPath.evaluate(xpath, new InputSource(new StringReader(xml)), XPathConstants.NODE);

        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        t.transform(new DOMSource(node), new StreamResult(System.out));
    }

}

关于java - xml解析器,一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287606/

相关文章:

java - 检查结果是否唯一

Python 2.6 xml.dom.ext 对象丢失?

php - 解析在引号括起的文本中包含逗号的 csv 数据

javascript - 将字符串解析为 Javascript 中的原始值

java - 当recyclerview的itemview进入屏幕区域时如何更新firebase中的子值?

java - Maven pom.xml 文件显示错误

java - 如何跟踪鼠标在桌面上的点击

java - 如何在 Spring Batch ItemWriter 中为子 bean 编写多个 XML 文件?

java - 使用 Spring MVC 在 jsp 文件中显示 XML

python - 什么是适用于 Python 的良好 XML 流解析器?