首页 > 解决方案 > 代号一创建xml

问题描述

我正在尝试创建一个简单的 xml 文档。

我从来没有找到关于它的好文档,所以我只是这样尝试:

Element response = new Element("Artikelliste");
Element artikel1 = new Element("Artikel");
Element artikel2 = new Element("Artikel");
artikel1.setAttribute("nummer", "5678");
artikel1.setAttribute("bezeichnung", "KettenhandschuhXML");
artikel2.setAttribute("nummer", "1011");
artikel2.setAttribute("bezeichnung", "MesserXML");

response.addChild(artikel1);
response.addChild(artikel2);

OutputStream os = Storage.getInstance().createOutputStream("test1234.xml");
OutputStreamWriter writer = new OutputStreamWriter(os);
XMLWriter xmlWriter = new XMLWriter(false);        
xmlWriter.writeXML(writer, response);

FileSystemStorage.getInstance().openOutputStream("test1234.xml").write(response.toString().getBytes());

IllegalArgumentException由于最后一行,我目前得到一个,它说:

test1234.xml 不是有效路径,使用 FileSystemStorage.getInstance().getAppHomePath() 获取有效的 dir 路径来读取/写入文件

如果我更正相应的行,它看起来像这样:

FileSystemStorage.getInstance().openOutputStream( FileSystemStorage.getInstance().getAppHomePath()).write (response.toString().getBytes());

但是程序无法知道是哪个文件??!当我像这样运行代码时,没有错误消息,也没有任何反应,也没有创建文档......

感谢帮助!:)

标签: xmlcodenameone

解决方案


该行:

FileSystemStorage.getInstance().openOutputStream("test1234.xml").write(response.toString().getBytes());

应该:

FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + "test1234.xml").write(response.toString().getBytes());

我建议您阅读 Codename One 开发人员指南中的文档,位于文件系统、存储、网络和解析页面:

FileSystemStorage 中的所有路径都是绝对路径,这大大简化了可移植性问题,因为相对性的概念和当前工作目录不是很可移植。

所有 URL 都使用 / 作为其路径分隔符,即使在 Windows 中,我们也会尝试强制执行此行为。

目录以 / 字符结尾,因此可以通过其名称轻松区分。

FileSystemStorage API 提供了一个 getRoots() 调用来列出文件系统的根目录(然后您可以通过 listFiles API “挖掘”)。然而,这对于开发人员来说是令人困惑和不直观的。

为了简化创建/读取文件的过程,我们添加了 getAppHomePath() 方法。此方法允许我们获取可以存储/读取文件的目录的路径。

修复后,您的代码会生成以下 XML:

<Artikelliste>
 <Artikel nummer='5678' bezeichnung='KettenhandschuhXML'>
 </Artikel>
 <Artikel nummer='1011' bezeichnung='MesserXML'>
 </Artikel>
</Artikelliste>

我对 XML 没有直接经验,但请注意 aPropertyBusinessObject可以转换为 XML 或从 XML 转换


推荐阅读