Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.71
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
#1

Создание XML - Программирование Android

24.03.2013, 15:36. Просмотров 3468. Ответов 19
Метки нет (Все метки)

Доброго дня.
Прошу простить мои ламерские вопросы.
Проблема раз:
Нужно сгенерить xml файл.
Погуглил, нашел только как обрабатывать чужие XMLки.
Если не трудно можно пример создания простейшей XML, или ссылку на русскую инфу(где для чайника расписано).

Проблема два:
Как мне сохранить xml?
Необходимо создать папку на диске девайса, и туда сохранять.

По работе заставили писать програмулину, времени осталось мало, а я дуб дубом)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 15:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание XML (Программирование Android):

Создание XML запроса - Программирование Android
Всем привет) Пишу приложения для регистрирования пользователей на сервере. Пользователь вводит данные,создаётся хмл файл и отправляется...

Создание XML файлов Андроидом - Программирование Android
Требуется написать программу, которая будет создавать XML файл с некоторым кодом. Я не имею понятия как создвать файлы. Подскажите...

Создание объекта через xml разметку. NullPointerExeption - Программирование Android
Кажется у меня пробел в основах, я думал прописывая вью через разметку, при сборке создается экземпляр класса, и стоит лишь найти вьюшку по...

Создание экрана программно и через xml файл - Программирование Android
Когда задаю всё программно, все элементы как надо располагаются на экране, ничего не сдвигается, всё как надо. Пытаюсь точно так же задать...

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД) - Программирование Android
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3 Создание процедуры БД 1.4 Создание...

Создание документа XML через LINQ-to-XML - C#
как создать новый документ xml через LINQ-to-xml XDocument doc =new XDocument("name.xml",Encoding.UTF8); ...

19
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
25.03.2013, 18:55 #16
VictorAkira, ну если рут прав нет конечно она будет пуста.

Дело в том что мне нужно сохранить XMl так, что бы его можно было вытянуть и обработать.
Ну после создания напиши код чтоб он экспортировал этот файл на sdcard или вообще заливал на сервер и т.п.

Получить список файлов можно например так:

Java
1
2
3
String[] list = new String[10]; // вообще так лучше не делать но для проверки сойдет
list = fileList();
//Затем выводи этот массив в цикле используя например Log
Добавлено через 7 минут
Или сразу сохраняй файл в папку где у тебя есть доступ на чтение правда openFileOutput уже не пойдет
но есть и другие методы.

Добавлено через 4 минуты
Вот тебе еще пример сохранения файла заместо openFileOutput
https://sites.google.com/site/androi...ile-to-sd-card
или более подробно на русском:
http://startandroid.ru/ru/uroki/vse-...s-fajlami.html
0
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
25.03.2013, 20:38  [ТС] #17
ОЧень сильно Вас благодарю!
Однако у нас так и не получилось сделать(
Мне надо создать вот такую XML:
XML
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<Question>
        <item Title="Наименование компании:" CheckBox="" Answer="Наименование компании:" AnswerEdit="ООО Гангнам стайл" AnswerEdit_2=""/>
        <item Title="Адресс:" CheckBox="" Answer="Адресс:" AnswerEdit="Минск" AnswerEdit_2=""/>
</Question>
И сохранить ее в корень памяти(аля DCIM).
Если поможете то будем очень благодарны, ибо уже сроки горят(
0
Hank
61 / 52 / 4
Регистрация: 28.12.2011
Сообщений: 293
25.03.2013, 23:49 #18
Уважаемый, ViktorAkira.
Вот вам рабочий класс для создания xml файла с вашей структурой. Создаете объект этого класса и вызываете метод setAttr. Метод сам посмотрит существования файла и если его нет, то создаст с коревым тегом Question. После этого наполнит дочерними тегами и атрибутами. Значения атрибутам будут присвоены те, которые вы передадите в качестве параметров при вызове метода setAttr.
Новая запись в xml файле будет появляться столько раз, сколько вы вызовите этот метод.
Класс еще нужно до ума довести, например, сделать сохранение на SD-CARD (сейчас он пишется в каталог приложения), сделать этого не могу, т.к. комп заглючил, а с ним и IDE.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public class CreateTestXML {
    final String TAG = "CreateNewXML";
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder;
    Element element;
    Document doc;
    TransformerFactory transformerFactory;
    Transformer transformer;
    DOMSource domSource;
    StreamResult sr;
    String filepath = "/data/data/PACKAGE_NAME/files/"; //укажите свой Package_name
    String filename = "New.xml";
    File file = new File(filepath, filename);
    public void createDocument(){
        try{
            file = new File(filepath);
            file.mkdir();
            file = new File(filepath, filename);
            documentBuilder = documentBuilderFactory.newDocumentBuilder();
            doc = documentBuilder.newDocument();
            element = doc.createElement("Question");
            doc.appendChild(element);
            transformerFactory = TransformerFactory.newInstance();
            transformer = transformerFactory.newTransformer();
            domSource = new DOMSource(doc);
            sr = new StreamResult(file);
            transformer.transform(domSource, sr);
        } catch (ParserConfigurationException pce){
            Log.e(TAG, "Ошибка: ", pce);
        } catch (TransformerConfigurationException tce) {
            Log.e(TAG, "Ошибка: ", tce);
        } catch (TransformerException te) {
            Log.e(TAG, "Ошибка: ", te);
        }
    }
        public void setAttr(String title, String checkBox, String answer, String answerEdit, String answerEdit_2){
        if (file.isFile() == false)
            createDocument();
        try {
            documentBuilder = documentBuilderFactory.newDocumentBuilder();
            doc = documentBuilder.parse(file);
            element = doc.getDocumentElement();
            Element childelement = doc.createElement("item");
            element.appendChild(childelement);
 
            Attr attr = doc.createAttribute("Title");
            attr.setValue(title);
            childelement.setAttributeNode(attr);
 
            attr = doc.createAttribute("CheckBox");
            attr.setValue(checkBox);
            childelement.setAttributeNode(attr);
 
            attr = doc.createAttribute("Answer");
            attr.setValue(answer);
            childelement.setAttributeNode(attr);
 
            attr = doc.createAttribute("AnswerEdit");
            attr.setValue(answerEdit);
            childelement.setAttributeNode(attr);
 
            attr = doc.createAttribute("AnswerEdit_2");
            attr.setValue(answerEdit_2);
            childelement.setAttributeNode(attr);
 
            transformerFactory = TransformerFactory.newInstance();
            transformer = transformerFactory.newTransformer();
            domSource = new DOMSource(doc);
            sr = new StreamResult(file);
            transformer.transform(domSource, sr);
            Log.v(TAG, "Сохранено.");
        } catch (TransformerConfigurationException tce){
            Log.e(TAG, "Ошибка: ", tce);
        } catch (TransformerException te){
            Log.e("Error", String.valueOf(te));
        } catch (ParserConfigurationException pce) {
            Log.e(TAG, "Ошибка: ", pce);
        } catch (Exception e){
            Log.e(TAG, "Ошибка: ", e);
        }
    }
}
1
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
26.03.2013, 02:30 #19
VictorAkira,

не забудь только в манифест добавить:

XML
1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Да и если папки /mnt/sdcard/DCIM не существует файл не сохранится! Можно конечно добавить создание папки и создать например класс для получаемых данных и т.д. но мне лень, остальное сам добавишь.
Кстати папка DCIM вообще-то не предназначена для xml.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.test.createxml;
 
import java.io.File;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
 
public class CreateXML extends Activity {
 
    private static final String TAG = "123";
    private static final String PATH = Environment.getExternalStorageDirectory() +
            "/" + Environment.DIRECTORY_DCIM + "/file.xml";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        saveXML("4");   // в параметре указывается кол-во отступов  
    }
 
    private void saveXML(String indents) {
        try {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            
            // root element
            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("Question");
            doc.appendChild(rootElement);
            
            // item1 element
            Element item1 = doc.createElement("item");
            rootElement.appendChild(item1);
            
            // set attribute to item1 element
            item1.setAttribute("Title", "Наименование компании:");
            item1.setAttribute("CheckBox", "");
            item1.setAttribute("Answer", "Наименование компании:");
            item1.setAttribute("AnswerEdit", "ООО Гангнам стайл");
            item1.setAttribute("AnswerEdit_2", "");
            
            // item2 element
            Element item2 = doc.createElement("item");
            rootElement.appendChild(item2);
                        
            // set attribute to item2 element
            item2.setAttribute("Title", "Адрес:");
            item2.setAttribute("CheckBox", "");
            item2.setAttribute("Answer", "Адрес:");
            item2.setAttribute("AnswerEdit", "Минск");
            item2.setAttribute("AnswerEdit_2", ""); 
     
            // write the content into xml file
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc.getDocumentElement());
            StreamResult result = new StreamResult(new File(PATH));
            
            // set output properties
            transformer.setOutputProperty(OutputKeys.STANDALONE, "no");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", indents);
            transformer.transform(source, result);
            
            Log.d(TAG, "File saved!");
            
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Добавлено через 33 секунды
Упс уже опоздал
1
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
26.03.2013, 10:30  [ТС] #20
Огромное Вам спасибо!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 10:30
Привет! Вот еще темы с ответами:

Создание XML строки не используя System.Xml - C#
Каким образом сформировать строку XML и сохранить её содержимое в виде XML файла, не используя System.Xml?

Создание xml - Java SE
Сейчас у меня xml формируется StringBuilder-ом. Как это можно переделать в более удобочитаемый код? Пните, в какую сторону копать.

Создание xml файла - C#
Запускаю код из MSDN, ном почему вылетает исключение, что файл не найден using System; using System.Xml; using...

.NET 4.x создание XML деревьев в С# - C#
помогите пажалуста, есть код xml файла &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;ChaPasswordFields...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru