xml文档      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
          <root>
              <menu label="自助服务">
<item label="常见问题" target="_self" goto=""/>
<item label="在线解答" target="_self" goto=""/>
<item label="问题反馈" target="_self" goto=""/>
<item label="网络知识" target="_self" goto=""/>
              </menu>
          </root>我现在想把<menu label="自助服务">中的“自助服务”,改成“在线留言” 即<menu label="在线留言"> 而下面的<item>项都不发生任何改变
我的代码:
        int index = Integer.parseInt(request.getParameter("index")) - 1;
       org.jdom.input.SAXBuilder builder = new SAXBuilder();
      Document doc = builder.build(new FileInputStream(path));
      Element root = doc.getRootElement(); //得到根结点
      List elementList = root.getChildren(); //得到根结点下所有结点       Element children = (Element)elementList.get(index);
      List childList = children.getChildren(); //取子节点
     
       Element element = new Element("menu");   //添加新结点
      element.setAttribute("label", p_type);
      List ele = element.getChildren();
     for(int i=0;i<childList.size();i++)
    {
        Element child = (Element)childList.get(i);
        ele.add(child);
     }      elementList.remove(index);              //删除旧结点
     org.jdom.output.XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat());
     outp.output(doc, System.out);
     outp.output(doc, new FileOutputStream(path));
    

解决方案 »

  1.   

    DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
    try
    {
    DocumentBuilder dombuilder = domfac.newDocumentBuilder();
    InputStream is = new FileInputStream("d:/menu.xml");
    Document doc = dombuilder.parse(is);
    Element root = doc.getDocumentElement();
    root.getChildNodes().item(1).getAttributes().item(0).setNodeValue(
    "在线留言");
    System.out.println(root.getChildNodes().item(1).getAttributes()
    .item(0).getNodeValue());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }