0
我試圖得到一個XML節點的內容,但是這是我得到的輸出異常:getTextContent 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>
然後代碼塊:
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());
XML文件讀取並解析,因爲我們可以在這個最後一個(我指的是System.out之前獲得所有輸出。 println(「nom:」+ nom.getTextContent()); ..)。 我使用JDK 8u121,所以它已更新, 如果您有任何想法,這將有所幫助。 謝謝
XML文件在哪裏 –
我很抱歉。請找到XML文件以及上面的代碼塊。謝謝 – Nina
可能的重複http://stackoverflow.com/questions/14014989/java-lang-abstractmethoderror-org-apache-xerces-dom-elementimpl-gettextcontent – sideshowbarker