Java XML序列化程序:带属性的关闭标记

Java XML序列化程序:带属性的关闭标记,java,android,xml,serialization,Java,Android,Xml,Serialization,当用户第一次启动我的应用程序时,该应用程序将从web加载XML数据。但是,我不希望用户每次打开应用程序时都需要下载数据。所以我想我把数据保存到一个新的XML文件中,我用刚得到的数据生成这个文件。然后,用户会收到一个通知,通知他看到的数据是从缓存加载的,他可以单击一个按钮来同步数据并获取最新的数据 我现在的问题是,将数据保存到XML文件中。我使用xmlSerializer来实现它,除了一件事之外,它工作得很好 以下是我序列化某些数据的方式: xmlSerializer.startTag(null,

当用户第一次启动我的应用程序时,该应用程序将从web加载XML数据。但是,我不希望用户每次打开应用程序时都需要下载数据。所以我想我把数据保存到一个新的XML文件中,我用刚得到的数据生成这个文件。然后,用户会收到一个通知,通知他看到的数据是从缓存加载的,他可以单击一个按钮来同步数据并获取最新的数据

我现在的问题是,将数据保存到XML文件中。我使用xmlSerializer来实现它,除了一件事之外,它工作得很好

以下是我序列化某些数据的方式:

xmlSerializer.startTag(null, "imageURL");
xmlSerializer.text(((Node) imageURLList.item(0)).getNodeValue());
xmlSerializer.endTag(null, "imageURL");
我现在的问题是,我得到的XML是这样构建的

root-element
     elementwithAttribute START
          data
     elementwithAttribute END
     elementwithAttribute START
          data
     elementwithAttribute END
root-element
xmlSerializer.endTag(null, "rank nr=\""+i+"\"");
文件的属性是条目的编号

entry nr="1"
我试着像下面这样做

xmlSerializer.startTag(null, "rank nr=\""+i+"\"");

data

xmlSerializer.endTag(null, "rank");
但这使我脱离了我的for循环,只有第一个条目起作用,直到排名被不正确地关闭。当我像这样关闭标签时

root-element
     elementwithAttribute START
          data
     elementwithAttribute END
     elementwithAttribute START
          data
     elementwithAttribute END
root-element
xmlSerializer.endTag(null, "rank nr=\""+i+"\"");

它可以正常工作,但是XML文件看起来不像我想要的那样。我如何实现它,序列化程序知道
rank
rank nr
的结束标记?

应该将
nr=“1
写为一个属性-只需在
xmlSerializer.startTag(null,“rank”)之后调用
xmlSerializer.attribute(null,“nr”,String.valueOf(I))
谢谢。我现在有没有办法读取我保存的文件?我正在将所有内容写入cacheSavings.xml,但我不知道它保存在哪里。我认为是在内部存储中。我曾想过将文件上载到我的ftp服务器进行检查,但它不起作用,我甚至没有收到异常。我的日志也不起作用。当它不起作用时t success它应该记录,就像这里的
if(result)log.v(“上传结果”,“成功”);else log.v(“上传结果”,“失败”)
但它不是。你知道可能有什么问题吗?你可能需要发布更多的代码来确定它去哪里了,如果只是为了缓存数据,你可能应该使用
Context#openFileOutput(“cacheSavings.xml”)
或类似的东西-只需调用
Context#openFileInput(““cacheSavings.xml”)
。嘿,我比我想象的还要笨。我忘了我有一个字符串中的所有数据,所以我只是通过文本视图打印出来。然后看到:整个xml都在那里!谢谢!:)