问答详情
源自:2-2 使用 DOM 解析 XML 文件的属性名和属性值

运行程序报错。。

完整代码如下:

package com.imooc.dmtest.test;


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.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;


public class DOMETest {


public static void main(String[] args) {

// TODO Auto-generated method stub

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

try{

DocumentBuilder db=dbf.newDocumentBuilder();

Document document=db.parse("books.xml");

NodeList bookList=document.getElementsByTagName("book");

System.out.println(bookList.getLength()+"本书");

for(int i=0;i<bookList.getLength();i++)

{

// Node book=bookList.item(i);

// NamedNodeMap attrs=book.getAttributes();

// System.out.println("第i+1本书"+attrs.getLength()+"属性");

// for(int j=0;j<attrs.getLength();j++)

// {

// Node attr=attrs.item(j);

// System.out.println("属性名"+attr.getNodeName());

//

// System.out.println("属性值"+attr.getNodeType());

//

// }

Element book=(Element) bookList.item(i);

String attrValue=book.getAttribute("id");

System.out.println("id属性的属性值为"+attrValue);

}

}catch(ParserConfigurationException e){

e.printStackTrace();

}catch(SAXException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}


}


}

错误提示如下:

[Fatal Error] books.xml:1:37: 应该有伪属性名。

org.xml.sax.SAXParseException; systemId: file:///D:/%E6%90%9C%E7%8B%97%E9%AB%98%E9%80%9F%E4%B8%8B%E8%BD%BD/eclipse442win32/DOMETest/books.xml; lineNumber: 1; columnNumber: 37; 应该有伪属性名。

at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)

at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)

at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)

at com.imooc.dmtest.test.DOMETest.main(DOMETest.java:24)

不清楚是怎么回事?

还有那个books.xml文件里的是文字都是无法显示的,但是就是utf-8的???

提问者:慕仔7135344 2016-12-12 18:47

个回答

  • 跳跃的鱼
    2016-12-12 23:15:12
    已采纳

    关于xml文件里的文字无法显示,你看下文件保存时的编码格式是什么,如果不是utf-8,就改成utf-8编码模式,或者是你eclipse项目的编码格式不是utf-8编码模式,改正即可,排除以上之后就是你代码估计哪里调用错了,重新核对一下。还有你说的错误提示,我英文不好能力有限暂时看不出是哪个地方出了异常