当前位置: 首页 > 知识库问答 >
问题:

将XML格式保存为字符串而不是文件[duplicate]

万俟亦
2023-03-14

我使用DocumentBuilderFactory创建XML文件,如下所示:如何在Java中创建具有特定结构的XML文件。

我想将结果存储为java字符串,而不是将其保存到文件中。如何实现这一点。

重复:如何转换组织。w3c。多姆。文档对象到字符串?

共有2个答案

方承弼
2023-03-14

我建议您阅读关于I/O流的Java文档。具体来说,字符流部分讨论的是ReaderWriter类。

正如您在XMLOutputterJavaDoc中看到的那样,方法output采用不同的参数。你只需要选择合适的编写器,而不是FileWriter,例如使用StringWriter

但是,XMLOutputter也有outputString()方法,可以让您在内部(可能)直接生成一个String来执行该工作。

益思博
2023-03-14

这个例子可能会帮助你。

import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DOMBasicDoc {
    public static void main(String args[]) {
        try {
            String[] input = {"John Doe,123-456-7890", "Bob Smith,123-555-1212"};
            String[] line = new String[2];
            DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance();
            DocumentBuilder build = dFact.newDocumentBuilder();
            Document doc = build.newDocument();
            Element root = doc.createElement("root");
            doc.appendChild(root);
            Element memberList = doc.createElement("members");
            root.appendChild(memberList);
            for (int i = 0; i < input.length; i++) {
                line = input[i].split(",");
                Element member = doc.createElement("member");
                memberList.appendChild(member);
                Element name = doc.createElement("name");
                name.appendChild(doc.createTextNode(line[0]));
                member.appendChild(name);
                Element phone = doc.createElement("phone");
                phone.appendChild(doc.createTextNode(line[1]));
                member.appendChild(phone);
            }
            TransformerFactory tFact = TransformerFactory.newInstance();
            Transformer trans = tFact.newTransformer();

            StringWriter writer = new StringWriter();
            StreamResult result = new StreamResult(writer);
            DOMSource source = new DOMSource(doc);
            trans.transform(source, result);
            System.out.println(writer.toString());

        } catch (TransformerException ex) {
            System.out.println("Error outputting document");
        } catch (ParserConfigurationException ex) {
            System.out.println("Error building document");
        }
    }
}
 类似资料:
  • 我想将pandas数据帧保存为csv文件,问题是要将np.array转换为字符串。 我想将数组保存为数组,但在文档中找不到任何有用的内容。 解数独=[123345894324321321](整数列表) n_splits=3(整数) 最终结果应该是: [123 345 894 324 321 321] 1,[123 345 894 324 321 321] 3,[123 345 894 324 32

  • 问题内容: 我有以下代码: 我如何获取它来解析包含在字符串而不是文件中的XML? 问题答案: 我的代码库中有此功能,它应该对你有用。

  • 我有这个。我想创建一个,它保存如下 但是通过这样做 问题是每个现在都保存为。例如,第3行是 对于那些怀疑论者,我尝试了,它是。第2列工作正常。 如何保存为每行,而不是?也就是说,我如何保存所有行的作为而不是?

  • 问题内容: 我有一个格式化的XML文件,我想将其转换为一个行字符串,我该怎么做。 样本XML: 预期产量 提前致谢。 问题答案: 使用StringBuilder比concat更有效http://kaioa.com/node/59

  • 编程相对较新。我想读取一个URL,修改文本字符串,然后将其写入以行分隔的csv文本文件。 阅读 但我无法将相同的字符串写入文件——它只会变成一行(请参阅下面的循环,尝试1) 我想我正在寻找一种方法,在FileWriter或BufferedWriter循环中,将字符串finalDataA转换为数组字符串(即包括字符串后缀[0]),但我还没有找到这样一种方法,不会给出类型“不能”的错误将String转

  • 问题内容: 我想将数据转换为CSV格式的字符串。 通常会用到它,因为它处理所有疯狂的情况(逗号转义,引号转义,CSV方言等)。捕获的结果是期望输出到文件对象,而不是字符串。 我当前的解决方案是此功能有点怪异: 谁能提供一种仍然可以很好地处理边缘情况的更优雅的解决方案? 编辑:这是我最终完成的方式: 问题答案: 您可以使用而不是自己的: 该模块实现了类似文件的类,该类读写字符串缓冲区(也称为内存文件