getChildNodes() возвращает NULL для моего корня в XML

Моя цель: получить корень XML в объекте Node, а затем оценить его!

Моя проблема:

Я пытаюсь оценить свое выражение из ROOT файла XML, у меня есть этот метод (мне нужно реализовать):

public Object evaluate(String expression, QName returnType);

Предположим, что я уже открыл XML с помощью Document , например:

        //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...

Так где я ошибся?

Что с этим не так ?

Спасибо всем, Джек


person Jack cole    schedule 15.05.2012    source источник


Ответы (1)


первый:

Ваша unitedString не является допустимым выражением xPath, это должно быть что-то вроде /root/node/ xPath описывает пути к (а) конкретным узлам в вашем xml-файле.

второй:

Корневой узел любого xml — это специальный узел, называемый DocumentElement, вы можете добраться до него, вызвав doc.getDocumentElement().

person Gertjan Assies    schedule 15.05.2012