无法使用整齐和Xpath在java中检索Web数据

时间:2012-07-11 11:55:41

标签: java xpath tidy xmlnode

我要做的是从XHTML文件中删除一个简单的内部HTML。 我已将搜索范围缩小到元素节点,但我无法检索信息。

请注意:元素节点没有子节点。这样做我得到一个空指针异常

这是HTML SNIPPET

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

请注意,此文件的名称空间为          http://www.w3.org/1999/xhtml

你可以看到我有我想要的div元素BAJAJ AUTO LTD

以下是我正在使用的代码

    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 jxl.read.biff.BiffException;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;

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

    import com.sun.org.apache.xml.internal.serialize.Serializer;


    public class BSEQuotesExtractor implements valueExtractor {

@Override
public Vector<String> getName(Document d) throws XPathExpressionException,            RowsExceededException, BiffException, WriteException, IOException {
    // TODO Auto-generated method stub
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    xpath.setNamespaceContext(new MynamespaceContext());


    Object result = xpath.evaluate("//*[@id='dvTitle']",d, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;

    System.out.println(nodes.getLength());
    System.out.println(nodes.item(0).getNodeName());
    System.out.println(nodes.item(0).getAttributes().item(1).getNodeName());
    System.out.println(nodes.item(0).getAttributes().item(1).getNodeValue());
    System.out.println(nodes.item(0).getTextContent());

    return null;
}

public static void main(String[] args) throws MalformedURLException, IOException, XPathExpressionException, RowsExceededException, BiffException, WriteException{
    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);

}

        }

这是我得到的输出

  

1
  DIV
  dvTitle
  空

现在为什么我得到那个空?我应该BAJAJ AUTO LTD

1 个答案:

答案 0 :(得分:1)

当我打开您的代码引用page时,div对我来说实际上是空的:

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

所以也许您应该将页面内容保存到某个文件中,以检查它是否与您相同。如果是,但是您的浏览器以不同的方式显示内容,那么请确定哪些Cookie和其他标题的组合会有所不同。