Android-如何以xml格式将Sqlite表导出到外部存储

Android-如何以xml格式将Sqlite表导出到外部存储,android,xml,sqlite,android-external-storage,Android,Xml,Sqlite,Android External Storage,您好,我有一个应用程序,我需要将Sqlite表转换为Xml,并将其保存到外部存储器以便以后使用 我已经成功地在运行时创建了Sqlite表。它有13列。每一行代表一个对象(产品),每一列应该是Xml文件中的一个标记 下面是我试图创建Xml文件的部分 while(cursor2.moveToNext()) { veriler.add(cursor2.getInt(0) + "-" + cursor2.getString(1) + "-" + cursor2.getString(2)

您好,我有一个应用程序,我需要将Sqlite表转换为Xml,并将其保存到外部存储器以便以后使用

我已经成功地在运行时创建了Sqlite表。它有13列。每一行代表一个对象(产品),每一列应该是Xml文件中的一个标记

下面是我试图创建Xml文件的部分

while(cursor2.moveToNext()) {
        veriler.add(cursor2.getInt(0) + "-" + cursor2.getString(1) + "-" + cursor2.getString(2) + "-" + cursor2.getString(3) + "-" + cursor2.getString(4) + "-" + cursor2.getString(5) + "-" + cursor2.getString(6) + "-" + cursor2.getString(7) + "-" + cursor2.getString(8) + "-" + cursor2.getString(9) + "-" + cursor2.getString(10) + "-" + cursor2.getString(11) + "-" + cursor2.getInt(12) + "-" + cursor2.getInt(13));
        logolustur.WriteLogInformation(cursor2.getString(1),cursor2.getString(2),cursor2.getString(3),cursor2.getString(4),cursor2.getString(5),cursor2.getString(6),cursor2.getString(7),cursor2.getString(8),cursor2.getString(9),cursor2.getString(10),cursor2.getString(11),cursor2.getInt(12),cursor2.getInt(13));
    }
表的第一列是id列,我不需要它作为Xml中的标记,这就是为什么我没有将它发送到我的WriteLogInformation方法

下面是我的WriteLogInformation方法(用于创建xml)如下所示:

public void WriteLogInformation(String aracno, String siparisno, String urunadstr, String urunkodstr, String serinostr, String topukstr, String strKullaniciAd, String islemtipi, String okutmatipi, String mno, String hata, int siparismiktari, int teslimmiktari) {
    String path=context.getFilesDir().getAbsolutePath()+"/log2.xml";
    File file = new File( path );
        try {
            fos= context.getApplicationContext().openFileOutput("log2.xml",context.MODE_PRIVATE);

            serializer.setOutput(fos, "UTF-8");
            serializer.startDocument(null, Boolean.valueOf(true));
            serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

            serializer.startTag(null, "XML");
            serializer.startTag(null, "XMLDATA");

            serializer.startTag(null, "ARACNO");
            serializer.text(aracno);
            serializer.endTag(null, "ARACNO");

            serializer.startTag(null, "PN_SIPARIS_NO");
            serializer.text(siparisno);
            serializer.endTag(null, "PN_SIPARIS_NO");

            serializer.startTag(null, "URUNADI");
            serializer.text(urunadstr);
            serializer.endTag(null, "URUNADI");

            serializer.startTag(null, "URUNKODU");
            serializer.text(urunkodstr);
            serializer.endTag(null, "URUNKODU");

            serializer.startTag(null, "BARKOD");
            serializer.text(serinostr);
            serializer.endTag(null, "BARKOD");

            serializer.startTag(null, "TOPUKKODU");
            serializer.text(topukstr);
            serializer.endTag(null, "TOPUKKODU");

            serializer.startTag(null, "SOFORADI");
            serializer.text(strKullaniciAd);
            serializer.endTag(null, "SOFORADI");

            serializer.startTag(null, "ISLEMTIPI");
            serializer.text(islemtipi);
            serializer.endTag(null, "ISLEMTIPI");

            serializer.startTag(null, "OKUTMATIPI");
            serializer.text(okutmatipi);
            serializer.endTag(null, "OKUTMATIPI");

            serializer.startTag(null, "MUSTERIADI");
            serializer.text(mno);
            serializer.endTag(null, "MUSTERIADI");

            serializer.startTag(null, "HATA");
            serializer.text(hata);
            serializer.endTag(null, "HATA");

            serializer.startTag(null, "MIKTAR");
            serializer.text(String.valueOf(siparismiktari));
            serializer.endTag(null, "MIKTAR");

            serializer.startTag(null, "TESLIMMIKTAR");
            serializer.text(String.valueOf(teslimmiktari));
            serializer.endTag(null, "TESLIMMIKTAR");
            serializer.endTag(null,"XMLDATA");

            serializer.endDocument();
            serializer.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
}
它没有给出错误,但我无法检查是否创建了Xml文件,以及是否将其保存到外部存储器

我想要的Xml应该如下所示:

<XMLDATA>
    <ARACNO>AKO_448846</ARACNO>
    <ARACADI>KIRŞEHİR DENEME 28.4.</ARACADI>
    <SOFORADI>AHMET TALHA</SOFORADI>
    <PN_SIPARIS_NO>C003771814</PN_SIPARIS_NO>
    <MUSTERIADI>MAHMUT ILHAN - OTO LASTIK TAMIR ????</MUSTERIADI>
    <ADRES>ORTA MAH.SANAYI SITESI NO:35 BOZTEPE KIRŞEHİR</ADRES>
    <URUNKODU>5799</URUNKODU>
    <URUNADI>12.5/80-15.3 16PR IMF-18 TL 144 A8</URUNADI>
    <BARKOD>5799/00003597</BARKOD>
    <TOPUKKODU>30776212</TOPUKKODU>
    <MIKTAR>1</MIKTAR>
    <TESLIMMIKTAR>0</TESLIMMIKTAR>
</XMLDATA>
<XMLDATA>
    <ARACNO>AKO_448846</ARACNO>
    <ARACADI>KIRŞEHİR DENEME 28.4.</ARACADI>
    <SOFORADI>AHMET TALHA</SOFORADI>
    <PN_SIPARIS_NO>C003771810</PN_SIPARIS_NO>
    <MUSTERIADI>MAHMUT ILHAN - OTO LASTIK TAMIR ????</MUSTERIADI>
    <ADRES>ORTA MAH.SANAYI SITESI NO:35 BOZTEPE KIRŞEHİR</ADRES>
    <URUNKODU>8470</URUNKODU>
    <URUNADI>900-16  (V3-02-8)</URUNADI>
    <BARKOD />
    <TOPUKKODU />
    <MIKTAR>4</MIKTAR>
    <TESLIMMIKTAR>0</TESLIMMIKTAR>
</XMLDATA>

AKO_448846
基尔·埃赫·德内梅28.4。
艾哈迈特·塔哈
C003771814
MAHMUT ILHAN-OTO LASTIK TAMIR????
ORTA MAH.SANAYI现场编号:35 BOZTEPE KIRŞEHİR
5799
12.5/80-15.3 16PR IMF-18 TL 144 A8
5799/00003597
30776212
1.
0
AKO_448846
基尔·埃赫·德内梅28.4。
艾哈迈特·塔哈
C003771810
MAHMUT ILHAN-OTO LASTIK TAMIR????
ORTA MAH.SANAYI现场编号:35 BOZTEPE KIRŞEHİR
8470
900-16(V3-02-8)
4.
0
那么,有没有更好/更简单的选择呢?或者我的代码中仍然有希望在外部存储中保存一个Xml文件,如上图所示


基本上,如何将xml格式的sqlite表导出到sd卡?。由于表中每一行的每一列都是一个标记,每一行都代表一个Xml块。

出于好奇,您的清单中是否有正确的权限?否则,您将无法写入SD卡。是的,ofc我有。
Context#getFilesDir()
返回应用程序内部存储中的目录,而不是外部存储中的目录:。另请注意,
写入外部存储是一种危险的权限:。