トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

javaでXpathを使う(2)

Last-modified: 2013-08-24 (土) 02:14:21 (3990d)
Top / javaでXpathを使う(2)

javaでXpathを使う(2)

該当するXPathの要素があるかどうか知りたかったので作ったクラス。

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class UseXpath {

    Document docRdf = null;
    XPath xpath = null;

    public UseXpath(String dcndl) throws Exception {
        InputSource is = new InputSource(new StringReader(dcndl));
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder;
        builder = factory.newDocumentBuilder();
        docRdf = builder.parse(is);

        XPathFactory xPathFactory = XPathFactory.newInstance();
        xpath = xPathFactory.newXPath();
    }
    
    // 該当するXpathのノード数を返却
    public int getElementsCount(String expression)
            throws XPathExpressionException {
        Object result = xpath.evaluate(expression, docRdf,
                XPathConstants.NODESET);
        NodeList list = (NodeList) result;
        return list.getLength();
    }

    // 該当するXpathのノードリストを返却
    public NodeList getElements(String expression)
            throws XPathExpressionException {
        Object result = xpath.evaluate(expression, docRdf,
                XPathConstants.NODESET);
        return (NodeList) result;
    }

}