qq_早点_1
我在API里看了一下Document(org.w3c.dom.Document)发现它是继承Node,而Node下的各个接口(interface)有对应的节点名称(nodeName)、节点值(nodeValue)以及属性(attributes)。

而Document对应的节点名称为"#document",其节点值得到的最终还是null,属性为null。
如果只是将代码中Document的对象直接输出,那么会显示对应的名称以及对应的值。
注:原本调用System.out.println()方法应该是输出Object类中的toString()方法定义的:
getClass().getName() + '@' + Integer.toHexString(hashCode())
但是这里输出的:
[#document: null]
应该是某个父类(估计是NodeImpl类或者其他某个类)中重写的toString()方法
public String toString() {
return "[" + getNodeName() + ": " + getNodeValue() + "]";
}
慕虎0571853
抱歉,以查明原因了,是xml文件的问题
未完待续4
老项目,webservice可能会用到
慕雪1536570
写成UTF8就行
Passionate1
你把try。。catch里的e.printstra....方法里的内容改写一下,看看是哪里出了问题
艾米丽宏
是 xml dom中的节点集合。没有定义也可以使用,因为是dom下自带的。在DOM中有三个特别的集合分别是NodeList(节点的集合),NamedNodeMap(元素属性的集合)和HTMLCollection(html元素的集合)。这三个集合有一些共同的特点:它们都可以通过中括号表达式来访问集合中元素,也有length属性。但它们并不是数组,而且它们都是动态的,会根据页面元素的变化而变化。
神亿般的存在
看位置啊 ,例子中的id不是在book节点里面吗
慕先生9431606
这个orc.w3c.dom的包,是DOM里面常用的包,就是你Import时候的包。
你想知道怎么选的他,你去类名上面,你会看到很多 如 import java.io.BufferedReader;这样的,你进去找,是否有orc.w3c.dom这个包。如果引错了,同样的,也是在这里找,把你引错的那行import删掉就好了。
邓一格
xml文件保存的时候编码改成UTF-8试试
16k闪存大脑3954634
应该是说错了
张禹专
咕嘟咕嘟和布鲁鲁
这个应该是让你安装XML打开方式的插件,安装一个就好了https://zhidao.baidu.com/question/579963982.html
春予秋
姐姐阿姨都不介意,声音好听就行!hhh.
没事就写代码啊
鼠标放上去就会显示,是否正确导入jar
for__what
你去开源网站上去找,很多项目例子
暮女神
一个标签可以有多个属性。id属性是其中的一种,是用来标记这个标签,就像身份证号码一样,是唯一的。所以会说有且只有一个id属性。
Ecin
用的时候通过类,查找API文档
qq_伞下一肩雨_0
append追加节点
谜之米
lalala德玛西亚
用记事本打开你的book.xml文件,然后另存为,选项选择UTF-8
慕粉3209786
你要把你那个xml文件第一行改一下,?和xml不能中间出现空格,我之前也是这个样子。
人间的下午茶
因为你看到的那个只是个接口,具体的实现你是看不到的。
800AM
/**
*解析XML文件
*/
public void parserXML(){
//通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
try {
// <至此!已关联需要解析的XML文件>
Document document = getDocumentBuilder().parse("books2.xml");
//获取book名节点的所有List列表
NodeList bookList = document.getElementsByTagName("book");
//获取book节点的数量,并输出
System.out.println("book节点的数量:" + bookList.getLength());
//循环遍历每一个book节点的属性以及子节点
for(int i = 0 ; i < bookList.getLength() ; i++ ){
//提示输出正在遍历的第几本书
System.out.println("**********开始遍历第" + (i + 1) + "本书**********");
//通过 item(i)方法 获取一个book节点,nodeList的索引值从0开始
Node book = bookList.item(i);
//获取book节点的所有属性集合
NamedNodeMap attrs = book.getAttributes();
//在不知道book节点有几个属性时使用attrs.getLength()获得长度
for (int j = 0 ; j < attrs.getLength() ; j++ ){
Node attr = attrs.item(j);
System.out.println("booK的属性名:" + attr.getNodeName() + "_____属性值:" + attr.getNodeValue());
}
//获取book节点子节点的List集合
NodeList childNodes = book.getChildNodes();
//输出book子节点集合的长度
System.out.println("childNodes:" + childNodes.getLength());
//遍历book子节点
for(int k = 0 ; k < childNodes.getLength() ; k ++){
//获取book子节点
Node child = childNodes.item(k);
//获取book子节点的属性集合
NamedNodeMap atts = child.getAttributes();
//遍历该book子节点的属性集合
for (int j = 0 ; j < atts.getLength() ; j++ ){
Node attr = atts.item(j);
//
System.out.println("子节点的属性名:" + attr.getNodeName() + "_____属性值:" + attr.getNodeValue());
}
if(child.getNodeType() == Node.ELEMENT_NODE){
System.out.println(child.getNodeName() + ": " + child.getTextContent());
}
}
//提示遍历结束
System.out.println("**********结束遍历第" + (i + 1) + "本书**********");
}
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
慕仔7135344
关于xml文件里的文字无法显示,你看下文件保存时的编码格式是什么,如果不是utf-8,就改成utf-8编码模式,或者是你eclipse项目的编码格式不是utf-8编码模式,改正即可,排除以上之后就是你代码估计哪里调用错了,重新核对一下。还有你说的错误提示,我英文不好能力有限暂时看不出是哪个地方出了异常
慕仔7135344
还有你的xml文件也贴出来
qq_名为大宇_04357207
对于你要解析的xml文件,节点类型就是固定的,但是对于你在编写的xml文件,节点类型可以改变。
节点类型如下:
<book id = "1">一本书</book>
<book></book>是Element
id = "1"是Attribute
“一本书”是Text
qq_嘟嘟_20
你student里面都没有属性值,attrs.getLength当然是0啊,
慕粉2217129173
1.可以在不同应用程序之间的通信。
2.可以在不同平台之间的通信。
3.可以在不同平台之间的数据共享。
qq__3590
那为什么老师的就没有出现那种情况?
慕神1178877
你用什么软件写的?普通文件编辑保存的时候可以命名字符编码格式;一般选utf-8;或者查看一下编码;修改为和myEclipse项目编码相同的应该就可以了.我在项目中创建xml文件就没问题