Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回异常的xml节点上的getTextContent_Java_Xml_Dom - Fatal编程技术网

Java 返回异常的xml节点上的getTextContent

Java 返回异常的xml节点上的getTextContent,java,xml,dom,Java,Xml,Dom,我试图获取xml节点的内容,但这是作为输出得到的: Exception in thread "main" java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredElementImpl.getTextContent()Ljava/lang/String; at cities2.main(cities2.java:74) 您可以在此处找到XML文件: <?xml version="1.0" encoding="UTF-

我试图获取xml节点的内容,但这是作为输出得到的:

Exception in thread "main" java.lang.AbstractMethodError: 
org.apache.xerces.dom.DeferredElementImpl.getTextContent()Ljava/lang/String;  
at cities2.main(cities2.java:74)
您可以在此处找到XML文件:

<?xml version="1.0" encoding="UTF-8" ?>

<repertoire>
<!-- John DOE -->
<personne sexe="masculin">
    <nom>DOE</nom>
    <prenom>John</prenom>
    <telephones>
        <telephone type="fixe">01 02 03 04 05</telephone>
        <telephone type="portable">06 07 08 09 10</telephone>
    </telephones>
</personne>
XML文件被读取和解析,因为我们可以得到最后一个文件之前的所有输出(我指的是System.out.println(“nom:+nom.getTextContent());…)。 我用的是JDK 8u121,所以它被更新了, 如果你有任何想法,这将是有益的。
谢谢

stacktrace中出现的
org.apache.xerces.dom
表明您在JRE中使用的不是dom实现,而是apache xerces。如果您使用的Xerces版本非常旧,没有实现DOM级别3,则会出现这种异常。要么删除Xerces(以便使用JRE中的DOM实现),要么将其升级到新版本。

XML文件在哪里?对不起。请查找上面的XML文件和代码块。非常感谢,非常感谢。我的问题已通过此解决方案解决。请如何将标签添加为已解决的问题
import java.io.File;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class cities2 {
public static void main(final String[] args) {
    /*
     * Etape 1 : récupération d'une instance de la classe "DocumentBuilderFactory"
     */
    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    try {
        /*
         * Etape 2 : création d'un parseur
         */
        final DocumentBuilder builder = factory.newDocumentBuilder();

    /*
     * Etape 3 : création d'un Document
     */
    final Document document= builder.parse(new File("cities2.xml"));



    /*
     * Etape 4 : récupération de l'Element racine
     */
    final Element racine = document.getDocumentElement();

    //Affichage de l'élément racine
    System.out.println("\n*************RACINE************");
    System.out.println(racine.getNodeName());

    /*
     * Etape 5 : récupération des personnes
     */
    final NodeList racineNoeuds = racine.getChildNodes();
    final int nbRacineNoeuds = racineNoeuds.getLength();

    for (int i = 0; i<nbRacineNoeuds; i++) {
        if(racineNoeuds.item(i).getNodeType() == Node.ELEMENT_NODE) {
            final Element personne = (Element) racineNoeuds.item(i);

        //Affichage d'une personne
        System.out.println("\n*************PERSONNE************");
        System.out.println("sexe : " + personne.getAttribute("sexe"));

            /*
         * Etape 6 : récupération du nom et du prénom
         */
        final Element nom = (Element) personne.getElementsByTagName("nom").item(0);
        final Element prenom = (Element) personne.getElementsByTagName("prenom").item(0);






        //Affichage du nom et du prénom
        System.out.println("nom : " + nom.getTextContent());
       System.out.println("prénom : " + prenom.getTextContent());

        /*
         * Etape 7 : récupération des numéros de téléphone
         */
        final NodeList telephones = personne.getElementsByTagName("telephone");
        final int nbTelephonesElements = telephones.getLength();

        for(int j = 0; j<nbTelephonesElements; j++) {
            final Element telephone = (Element) telephones.item(j);

                    //Affichage du téléphone
                    System.out.println(telephone.getAttribute("type") + " : " + telephone.getTextContent());
        }
        }               
    }           
    }
    catch (final ParserConfigurationException e) {
        e.printStackTrace();
    }
    catch (final SAXException e) {
        e.printStackTrace();
    }
    catch (final IOException e) {
        e.printStackTrace();
    }       
}
 //Affichage du nom et du prénom
    System.out.println("nom : " + nom.getTextContent());
   System.out.println("prénom : " + prenom.getTextContent());