1

私は今2日間頭を叩いています。JTidyを使用してDOMParseにデータをスクラップし、次にXPathFactoryを使用してXPathを使用してノードを検索するXHTMLWebページがあります。

Xhtmlスニペットは次のようなものです

    <div style="line-height: 22px;" id="dvTitle" class="titlebtmbrdr01">BAJAJ AUTO LTD.</div>

今、私はそのBAJAJAUTOLTDが欲しいです。

私が使用しているコードは次のとおりです。

    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.Vector;

    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpression;
    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;


   public class BSEQuotesExtractor implements valueExtractor {

@Override
public Vector<String> getName(Document d) throws XPathExpressionException {
    // TODO Auto-generated method stub
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr = xpath.compile("//div[@id='dvTitle']/text()");
    Object result = expr.evaluate(d, XPathConstants.NODESET);
    NodeList nodes = (NodeList)result;
    for(int i=0;i<nodes.getLength();i++)
    {
        System.out.println(nodes.item(i).getNodeValue());
    }

    return null;
}

public static void main(String[] args) throws MalformedURLException, IOException, XPathExpressionException{
    BSEQuotesExtractor q = new BSEQuotesExtractor();
    DOMParser parser = new DOMParser(new URL("http://www.bseindia.com/bseplus/StockReach/StockQuote/Equity/BAJAJ%20AUTO%20LTD/BAJAJAUT/532977/Scrips").openStream());
    Document d = parser.getDocument();
    q.getName(d);

}

    }

しかし、私はnull出力を取得し、BAJAJAUTOLTDではありません。私を助けてください

4

2 に答える 2

1

XPathConstants.STRINGの代わりに使用する必要がありますXPathConstants.NODESET。ノードのリストではなく、単一の要素(div)の値を取得する必要があります。書く:

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
String divContent = (String) path.evaluate("//div[@id='dvTitle']", document, XPathConstants.STRING);

中には「 BAJAJAUTOLTD divContent。」が入っています。

于 2012-07-09T09:45:45.990 に答える
1

これを試して。

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//div[@id='dvTitle']");
Object result = expr.evaluate(d, XPathConstants.NODE);
Node node = (Node)result;
System.out.println(node.getTextContent());
于 2012-07-09T09:29:04.047 に答える