cai772088996
cai772088996
2016-01-17 12:20
采纳率: 84.7%
浏览 1.5k
已采纳

初学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
    毕小宝 2016-01-17 12:53
    已采纳

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

    点赞 评论
  • enpterexpress
    把分全给哥 2016-01-17 13:05

    是不是没应用啥包

    点赞 评论
  • wojiushiwo945you
    毕小宝 2016-01-17 14:28

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

    点赞 评论

相关推荐