【问题标题】:Java XML modifyingJava XML 修改
【发布时间】:2013-07-02 10:43:56
【问题描述】:
import java.io.ByteArrayInputStream;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class modifyXML {

    public static void modify(StringBuffer XMLBuffer) throws IOException, ParserConfigurationException, SAXException{

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();   
        Document doc = db.parse(new ByteArrayInputStream(XMLBuffer.toString().getBytes()));
        Element rootNode = doc.getDocumentElement();

        NodeList priceList = rootNode.getElementsByTagName("price");
        priceList.item(0).setTextContent("190");

        NodeList inStockList = rootNode.getElementsByTagName("id_product_attribute");
        inStockList.item(0).setTextContent("100");



    }
}

我正在尝试修改一个 XML 文件,然后将它们重新组合在一起。我已经处理了修改部分,但我无法将 XML 文件重新组合在一起。结果可以是 String 或 StringBuffer。

最好/最简单的方法是什么?

【问题讨论】:

  • 你的代码有什么相关性?你的问题根本没有提到它......
  • 横向建议:使用不会隐藏此功能的不那么愚蠢的 XML API,例如 JDOM。 (不,我不是标准 DOM 的粉丝。)

标签: java xml


【解决方案1】:

使用Transformer,如WhiteFang34XML Document to String 中所述。

官方 Java 教程:Writing Out a DOM as an XML File(只需将 StreamResult 包裹起来,例如 StringWriter)。

更新:

Less known, shorter alternative by ykaganovich 基于加载/保存对象:

【讨论】:

  • 对于漂亮的打印 XML(缩进)看here。不要看选择的答案,而是看TransformerFactory
  • WhiteFang 的帖子非常清晰和直截了当,我建议这样做。谢谢你的回答。
猜你喜欢
  • 2015-02-11
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多