gpt4 book ai didi

java - 无法写入 XML 文件

转载 作者:行者123 更新时间:2023-11-30 11:04:37 25 4
gpt4 key购买 nike

我一直致力于用 Java 写入 XML 文件。代码执行没有任何错误,但是我尝试添加的额外部分没有成功添加。

我错过了什么?如何更正我的方法以重写现有文件,并添加我需要的额外组件?

public static synchronized AffLink writeAffLinkEntry(String mPrimSysComp, String mSecSysComp, String mPrimSysCompId,
String mSecSysCompId) throws Exception {

String primSysCompApiKey = RandomStringUtils.random(50);
String secSysCompApiKey = RandomStringUtils.random(50);

//ADD RECORD TO THE XML FILE
File fXmlFile = new File("C:/App/J/AffLinkList.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();

Element rootElement = doc.createElement("affiliates");
Element affiliatePairElement = doc.createElement("affiliate_pair");

affiliatePairElement.setAttribute("prim_sys_comp", mPrimSysComp);
affiliatePairElement.setAttribute("sec_sys_comp", mSecSysComp);
affiliatePairElement.setAttribute("prim_sys_comp_id", mPrimSysCompId);
affiliatePairElement.setAttribute("sec_sys_comp_id", mSecSysCompId);
affiliatePairElement.setAttribute("prim_sys_comp_api_key", primSysCompApiKey);
affiliatePairElement.setAttribute("sec_sys_comp_api_key", secSysCompApiKey);

rootElement.appendChild(affiliatePairElement);
// doc.appendChild(rootElement);

try {
Transformer tr = TransformerFactory.newInstance().newTransformer();
tr.setOutputProperty(OutputKeys.INDENT, "yes");
tr.setOutputProperty(OutputKeys.METHOD, "xml");
tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
/* tr.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "affiliates.dtd");*/
tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

// send DOM to file
tr.transform(new DOMSource(doc),
new StreamResult(new FileOutputStream("C:/App/J/AffLinkList.xml")));

} catch (TransformerException te) {
System.out.println(te.getMessage());
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
//update cache
affLinkList = syncAffLinkList(true);

return new AffLink(mPrimSysComp, mSecSysComp, mPrimSysCompId, mSecSysCompId, primSysCompApiKey, secSysCompApiKey);

}

这就是 XML 文档开始时的样子,但稍后可能会在其中包含元素。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<affiliates>
</affiliates>

最佳答案

我最好的猜测是您需要将根元素添加到 xml 文档。

doc.appendChild(rootElement);

更新:看来您已经尝试过了。所以,我猜我不明白你想达到什么目的。

添加根元素对我有用,并给出以下结果。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<affiliates>
<affiliate_pair prim_sys_comp="prim_sys_comp" prim_sys_comp_api_key="prim_sys_comp_api_key" prim_sys_comp_id="prim_sys_comp_id" sec_sys_comp="sec_sys_comp" sec_sys_comp_api_key="sec_sys_comp_api_key" sec_sys_comp_id="sec_sys_comp_id"/>
</affiliates>

关于java - 无法写入 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975652/

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