gpt4 book ai didi

java - 格式化 XML 文件 : Indentation

转载 作者:数据小太阳 更新时间:2023-10-29 02:03:15 25 4
gpt4 key购买 nike

我正在尝试编写具有适当缩进的 XML 文件。这是我的代码:

   public class WebVideo {

private final String C_XMLFILEPATH = "resources/video.xml";
private String itemId;
private String videoPath;

public WebVideo(long itemId, String videoPath) {
this.itemId = Long.toString(itemId);
this.videoPath = videoPath;
}

public void saveVideo() throws ParserConfigurationException, IOException,
TransformerFactoryConfigurationError, TransformerException,
SAXException {
File xmlFile = new File(C_XMLFILEPATH);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
Document document = null;
Element rootElement = null;

if (xmlFile.exists()) {
document = documentBuilder.parse(xmlFile);
rootElement = document.getDocumentElement();

} else {
document = documentBuilder.newDocument();
rootElement = document.createElement("Videos");
document.appendChild(rootElement);
}

Element itemElement = document.createElement("Video");
rootElement.appendChild(itemElement);

Element idElement = document.createElement("Id");
Text id = document.createTextNode(itemId);
idElement.appendChild(id);
itemElement.appendChild(idElement);

Element pathElement = document.createElement("Path");
Text path = document.createTextNode(videoPath);
pathElement.appendChild(path);
itemElement.appendChild(pathElement);

Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "4");

StreamResult streamResult = new StreamResult(new StringWriter());
DOMSource domSource = new DOMSource(document);
transformer.transform(domSource, streamResult);
String xmlString = streamResult.getWriter().toString();

BufferedWriter bufferedWriter = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(xmlFile)));
bufferedWriter.write(xmlString);
bufferedWriter.flush();
bufferedWriter.close();
}
}

一切正常,但如果您仔细查看输出 XML 文件,就会发现在我追加新元素时出现问题。输出 XML 文件在这里:

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Videos>
<Video>
<Id>1</Id>
<Path>path</Path>
</Video>
<Video>
<Id>2</Id>
<Path>path</Path>
</Video>
</Videos>

标签与标签在同一个缩进中。我怎么解决这个问题?谢谢。

最佳答案

查看此答案以了解 XML 的 pretty-print :How to pretty print XML from Java?

关于java - 格式化 XML 文件 : Indentation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com