2 cai772088996 cai772088996 于 2016.01.17 20:20 提问

初学JAVA-XML遇到的问题,求指教

题目:获得下图xml文件中第二个linkname中的name的内容,也就是“小李”

图片说明

图片说明

贴代码:


小蔡
772088996@qq.com
成都
源代码教育

<linkman id="2">
    <name>小李</name>
    <email>497458450@qq.com</email>
    <address>昆明</address>
    <group>寰宇旅遊</group>
</linkman>

再贴:

public class GetNameTest {
@Test
public void getnametest() throws Exception {
//1,取得XML的document对象
File file = new File("D:/workspace2/1-16-xml/src/cn/itsource/xml/condacts.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(file);

    //2,取得xml的根元素
    Element rootEle = doc.getDocumentElement();

    //3,拿到目标name所在的第二个linkman
    NodeList linkManList = rootEle.getElementsByTagName("linkname");
    //上一句拿到的是所有linkman集合,遍历出所有linkman
    for(int i = 0;i<linkManList.getLength();i++){
        Node linkManNode = linkManList.item(i);
    }
    //拿到第二个linkman,并强转成元素对象
    Element linkManEle = (Element) linkManList.item(1);

    //4,拿到linkman中的name元素
    NodeList nameList = linkManEle.getElementsByTagName("name");
    //上一句返回值虽然还是个集合,但是name就一个,因此不用遍历了,直接取
    Node getname = nameList.item(0);
    //拿到name中的文本元素
    System.out.println(getname.getTextContent());
}

}

3个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.17 20:53
已采纳

为什么不贴代码呢?贴代码还可以帮忙测一下,这个图让回答者敲代码是很纠结的事情呢。把代码贴出来呗,我有空帮你测测问题。

wojiushiwo945you
wojiushiwo945you 回复cai772088996: OK,问题找到了,修改查找的tag名称为linkman就好了。
接近 2 年之前 回复
cai772088996
cai772088996 已经贴出来了亲,XML文件刚开头的代码好像被网站搞乱了,不过不多,您将就用
接近 2 年之前 回复
cai772088996
cai772088996 已经贴出来了亲,XML文件刚开头的代码好像被网站搞乱了,不过不多,您将就用
接近 2 年之前 回复
enpterexpress
enpterexpress   2016.01.17 21:05

是不是没应用啥包

wojiushiwo945you
wojiushiwo945you 如果没有引入外部包,就会显示编译错误了。这个问题应该是查找方式不对导致的。
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.17 22:28

Ok,测试了你的代码,整体没问题,主要就是你粗心导致的,你的xml文件中节点名称是linkman,而你代码中查找的tag名称是linkname,当然找不到了。
JUint单元测试得到红杠杠说明代码中有异常,异常就是你的代码linkManEle这个对象查找的为空。
所以,修正下3处的代码tag改为linkman就可以了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!