阅读XML - 如何?

时间:2018-01-08 11:20:02

标签: android xml sqlite

我有一个应用程序,它使用sql语句读取xml文件,并将它们放在sqlite数据库中。 到目前为止,一切都运作良好。

当我将android studio版本更改为最后一个时,我的问题就出现了。从那里,它只读取每个sql语句的一半。

例如以下句子:

<datos>INSERT INTO Receta (Nombre, Descripcion, Tipo, TipoMenu, Coeficiente, Comensales, Situacion, Modificacion, Fecha, Hora, Defecto) Values ('Tomate con mozarela', 'Lavamos los tomates y los cortamos a rodajas
Colocamos los tomates en un plato y sobre ellos las rodajas de mozarella
Ponemos albahaca, perejil o las hierbas que más os gusten y aceite de oliva. ¡Riquísima y fácil!', 'Primero', 'Normal', '7', '4', '0', 'N', '0', '0', 'S')</datos>

请阅读:

INSERT INTO Receta (Nombre, Descripcion, Tipo, TipoMenu, Coeficiente, Comensales, Situacion, Modificacion, Fecha, Hora, Defecto) Values (

我的代码是:

private void crearRecetasDefecto() {
    ArrayList<String> aSentenciaReceta = new ArrayList<>();
    ArrayList<String> aSentenciaIngredientes = new ArrayList<>();
    String mensaje = new String();
    XmlPullParser parser = this.getResources().getXml(recetas_defecto);
    String sentencia = new String();
    String nombre = new String();

    int state = 0;
    do {
        try {
            state = parser.next();
        } catch (XmlPullParserException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        if (state == XmlPullParser.START_TAG) {
            nombre = parser.getName();
            switch (nombre) {
                case "datos":
                    sentencia = leerTexto(parser);
                    aSentenciaReceta.add(sentencia);
                    break;
                case "ingredientes":
                    sentencia = leerTexto(parser);
                    aSentenciaIngredientes.add(sentencia);
                    break;
            }
        }
    } while (state != XmlPullParser.END_DOCUMENT);

    WebserviceUtilSqlite webservice = new WebserviceUtilSqlite(this);
    TaskCallbackdefecto(webservice.insertarRecetasDefecto(aSentenciaReceta, aSentenciaIngredientes));

}

private String leerTexto(XmlPullParser parser) {
    String texto = new String();
    int state = 0;
    try {
        state = parser.next();
    } catch (XmlPullParserException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    if (state == parser.TEXT){
        texto = parser.getText();
    }

    return texto;
}

xml文件是:

<?xml version="1.0" encoding="utf-8"?>
<rootelem1>
    <receta>
        <datos>INSERT INTO Receta (Nombre, Descripcion, Tipo, TipoMenu, Coeficiente, Comensales, Situacion, Modificacion, Fecha, Hora, Defecto) Values ('Tomate con mozarela', 'Lavamos los tomates y los cortamos a rodajas
Colocamos los tomates en un plato y sobre ellos las rodajas de mozarella
Ponemos albahaca, perejil o las hierbas que más os gusten y aceite de oliva. ¡Riquísima y fácil!', 'Primero', 'Normal', '7', '4', '0', 'N', '0', '0', 'S')</datos>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Tomate con mozarela', 'Tomates ensalada', '2', 'kg', 'X')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Tomate con mozarela', 'Mozzarella fresca', '0.5', 'bola', 'X')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Tomate con mozarela', 'Perejil y albahaca', '1', 'pellizco', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Tomate con mozarela', 'Aceite de oliva virgen', '1', 'chorro', 'IngredientePrincipal')</ingredientes>
    </receta>
    <receta>
        <datos>INSERT INTO Receta (Nombre, Descripcion, Tipo, TipoMenu, Coeficiente, Comensales, Situacion, Modificacion, Fecha, Hora, Defecto) Values ('Huevos rellenos', 'Cocemos los huevos unos 16 minutos en agua hirviendo con un poco de sal.
Dejamos enfriar, pelamos, cortamos por la mitad a lo largo cada huevo, vaciamos las yemas y las reservamos.
Hacemos la mayonesa...ponemos en un vaso batidor el huevo, unas gotas de zumo de limón,s al y aceite,batimos con la batidora la cantidad deseada.
En un bol ponemos el atún escurrido, las yemas del huevo (reservamos 3 trozos) y mayonesa, removemos bien y rellenamos los huevos, decoramos con una aceituna en el medio y las yemas reservadas ralladas por encima.', 'Primero', 'Normal', '9', '4', '0', 'N', '0', '0', 'S')</datos>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Huevos rellenos', 'Huevos', '8', 'u.', 'X')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Huevos rellenos', 'Atún', '2', 'latas', 'X')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Huevos rellenos', 'Aceitunas negras', '4', 'u.', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Huevos rellenos', 'Mayonesa', '1', 'bote', '')</ingredientes>
    </receta>
    <receta>
        <datos>INSERT INTO Receta (Nombre, Descripcion, Tipo, TipoMenu, Coeficiente, Comensales, Situacion, Modificacion, Fecha, Hora, Defecto) Values ('Espaguetis boloñesa', 'En una cazuela ponemos 3 cucharadas de aceite y freímos los ajos cortados muy finos, cuando estén añadimos la carne picada y un poco de sal, lo damos unas vueltas y ponemos el vino, y la pimienta, lo dejamos 3 minutos y reservamos.
En una sartén freímos la cebolla picada y la zanahoria unos 12 minutos, y añadimos el tomate pelado y cortado en trozos pequeños, ponemos un poquito de sal y el azúcar, 15 minutos y lo añadimos a la cazuela con la carne, lo dejamos otros 10 minutos y probamos de sal.
En una cazuela grande con 6 L de agua y un poco de sal cocemos la pasta, a fuego lento medio ( la pasta debéis ponerla en el agua cuando comience a hervir ) cuando esté cocida la ponemos en un colador y podemos empezar a emplatar, colocamos la pasta en el plato, encima la salsa y por último unas ojas de albahaca encima.', 'Primero', 'Normal', '5', '4', '0', 'N', '0', '0', 'S')</datos>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Espaguetis', '600', 'gr.', 'X')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Cebolla', '1', 'u.', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Zanahorias', '4', 'u.', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Ajo', '2', 'dientes', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Carne picada', '500', 'gr', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Tomates maduros', '1200', 'gr', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Azúcar', '1', 'cucharadita', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Vino tinto', '0.5', 'vaso', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Caldo de carne', '0.5', 'l.', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Queso grana padano', '', '', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Albahaca fresca', '1', 'pizca', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Pimienta negra', '1', 'pizca', '')</ingredientes>
        <ingredientes>INSERT INTO Ingredientes (RecetaNombre, IngredienteNombre, IngredienteCantidad, IngredienteUnidad, IngredientePrincipal) Values ('Espaguetis boloñesa', 'Aceite de oliva', '', '', '')</ingredientes>
    </receta>
</rootelem1>

我一直在测试,问题是&#34;&#39;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;文字的阅读被切断了。 我试图改变&#34;&#39;&#34;通过&#39;&#34;&#39;然后阅读整个陈述,但省略&#39;&#34;&#39;&#39;当它在sqllite中执行插入时会取消,因为它不了解sqlite语法。 我试图把&#34;&#39;&#34;而不是&#34;&#39;&#34;但它停在第一个&#34;&amp;'&#34;。

我怎样才能把&#34;&#39;&#34;并且XmlPullParser将其理解为角色?

0 个答案:

没有答案