xml - 代号一创建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());
但是程序无法知道是哪个文件??!当我像这样运行代码时,没有错误消息,也没有任何反应,也没有创建文档......
感谢帮助!:)
解决方案
该行:
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 转换。
推荐阅读
- java - 如何在 android 的 ViewModel 中从一个 LiveData 对象获取数据到另一个对象?
- xamarin - VS 没有使用 System + Unhandled 异常
- node.js - 使用 node 和 pg-promise 加入 postgres 中的值列表
- swift - 具有自我类型要求的协议上的类型擦除
- python - 修改数据库的方法正在使从数据库中删除行的方法不起作用
- javascript - 单击按钮后等待ajax请求解决
- sql - 带有 LIKE 子句的 SQL LEFT JOIN 仅给出一行
- mysql - #1136 - 列计数与第 1 行的值计数不匹配,不缺少逗号。值中没有额外的逗号
- node.js - LoopBack 4 - 在 API 资源管理器中添加“授权”按钮
- rest - 在 Bot Framework 中外部 API 调用成功时发送消息