修改XML(为XML添加、删除节点)

本文介绍了一种通过Java程序自动向XML文件中添加或删除节点的方法。具体包括根据指定类别和图片路径添加节点到XML文件的功能,以及从XML文件中删除特定节点的功能。这些操作对于维护动态配置文件或数据文件特别有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

   * 添加图片之后,根据上传的类别,修改临时XML文件

   *

   * @param catalog

   *          ,例如:01

   * @param imgSrc

   *          ,例如:book\0000000\040\a.jpg

   * @param xmlPath

   *          ,例如:D:\TEMP.XML

   */

  public static void addNodeToTempXML(String catalog, String imgSrc, String reportName,String xmlPath) {

    Document document = load(xmlPath);

    Element root = document.getDocumentElement();

    if (root.hasChildNodes()) {

      NodeList ids = root.getChildNodes();

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

        Node id = ids.item(i);

        if (id.getNodeType() == Node.ELEMENT_NODE) {

          String name = id.getAttributes().getNamedItem("name").getNodeValue();

          if (name.equals(catalog)) {

            Element page_mode = document.createElement("page");

            page_mode.setAttribute("reportName", reportName);

            Text textseg = document.createTextNode(imgSrc);

            page_mode.appendChild(textseg);

            id.appendChild(page_mode);

            break;

          }

        }

      }

    }

    doc2XmlFile(document, xmlPath);

  }

 

  /**

   * 删除图片之后,根据上传的类别,修改临时XML文件

   *

   * @param manual_catalog

   * @param imgSrc

   *          ,例如:book\0000000\040\a.jpg

   * @param xmlPath

   *          ,例如D:\TEMP.XML

   */

  public static void deleteNodeFromTempXML(String manual_catalog, String imgSrc, String xmlPath) {

    Document document = load(xmlPath);

    Node root = document.getDocumentElement();

    if (root.hasChildNodes()) {

      NodeList catalogs = root.getChildNodes();

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

        Node catalog = catalogs.item(i);

        if (catalog.getNodeType() == Node.ELEMENT_NODE) {

          String name = catalog.getAttributes().getNamedItem("name").getNodeValue();

          if (name.equals(manual_catalog) && catalog.hasChildNodes()) {

            NodeList pages = catalog.getChildNodes();

            for (int j = 0; j < pages.getLength(); j++) {

              Node page = pages.item(j);

              if (page.getNodeType() == Node.ELEMENT_NODE) {

                String src = page.getFirstChild().getNodeValue();

                if (imgSrc.equals(src)) {

                  catalog.removeChild(page);

                  break;

                }

              }

            }

          }

        }

      }

    }

    doc2XmlFile(document, xmlPath);

  }

public static boolean doc2XmlFile(Document document, String filename) {

    boolean flag = true;

    try {

      TransformerFactory tf=TransformerFactory.newInstance();   

      Transformer transformer=tf.newTransformer();   

      DOMSource source=new DOMSource(document);   

      transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");   

      transformer.setOutputProperty(OutputKeys.INDENT,"yes");   

      PrintWriter pw=new PrintWriter(new FileOutputStream(filename));   

      StreamResult result=new StreamResult(pw);   

      transformer.transform(source,result); 

    } catch (Exception ex) {

      flag = false;

      ex.printStackTrace();

    }

    return flag;

  }

 

  public static Document load(String filename) {

    Document document = null;

    try {

      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

      DocumentBuilder builder = factory.newDocumentBuilder();

      document = builder.parse(new File(filename));

      document.normalize();

    } catch (Exception ex) {

      ex.printStackTrace();

    }

    return document;

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值