getChildNodes()在XML中为我的root返回NULL

时间:2012-05-15 08:50:13

标签: java xml xpath nodelist

我的目标:Node对象中获取XML的根目录,然后对其进行评估!

我的问题:

我正在尝试从XML文件的ROOT中评估我的表达式,我有这个方法(我需要实现的是):

public Object evaluate(String expression, QName returnType);

假设我已经使用Document打开了XML,如下所示:

        //load the document into a DOM Document
        this.domFactory = DocumentBuilderFactory.newInstance();

        domFactory.setNamespaceAware(true); // never forget this!

        this.builder = domFactory.newDocumentBuilder();
        this.doc = builder.parse("books.xml");

        //create an XPath factory
        this.factory = XPathFactory.newInstance();

        //create an XPath Object
        this.xpath = factory.newXPath();

现在当我这样做时,在public Object evaluate(String expression, QName returnType);内 :

String unitedString = " my characters " ; 
rootNode = doc.getChildNodes().item(0);
System.out.println(rootNode.getNodeName()); // this line presents the name of the root 
Object returnedObject= xpath.evaluate(unitedString,rootNode ,returnType);   // this line makes eclipse go crazy 

Eclispe在“4”行后说:" DTMManagerDefault.getDTMHandleFromNode(Node) line: not available " 但是在行“3”中,Eclipse生成了根的名称,即inventory ...

那我哪里出错了?

它出了什么问题?

谢谢大家,杰克

1 个答案:

答案 0 :(得分:1)

首先:

你的unitedString不是一个有效的xPath表达式,它应该像/ root / node / xPath那样描述(a)xml文件中特定节点的路径。

第二:

任何xml的根节点都是一个名为DocumentElement的特殊节点,您可以通过调用doc.getDocumentElement()

来获取它。