Код: Выделить всё
xpp.setInput(new StringReader(
"<data><phone><company>Samsung</company></phone></data>"));
return xpp;
например "http://sait.com/file.xml".
Код: Выделить всё
xpp.setInput(new StringReader(
"<data><phone><company>Samsung</company></phone></data>"));
return xpp;
Переменная in какого типа?ivan160892 писал(а): in = new BufferedReader ( new InputStreamReader(response.getEntity().getContent (),"utf-8"));
Код: Выделить всё
public class MainActivity extends Activity {
final String LOG_TAG = "myLogs";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String tmp = "";
try {
XmlPullParser xpp = prepareXpp();
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
switch (xpp.getEventType()) {
// начало документа
case XmlPullParser.START_DOCUMENT:
Log.d(LOG_TAG, "START_DOCUMENT");
break;
// начало тэга
case XmlPullParser.START_TAG:
Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
+ ", depth = " + xpp.getDepth() + ", attrCount = "
+ xpp.getAttributeCount());
tmp = "";
Первый раз пишу туда пустую строку, т.к. есть привычка не оставлять объекты равными null=bor= писал(а):Зачем дважды обнуляется tmp?
Код: Выделить всё
XmlPullParser prepareXpp() throws XmlPullParserException, IOException {
URL url = new URL( "http://levelup.accu-weather.com/widget/levelup/weather-data.asp?slat=59.678474&slon=30.461576&metric=1&LangId=25"); // ну например...
XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
XmlPullParser xpp = parserCreator.newPullParser();
xpp.setInput(url.openStream(), null);
return xpp;
}
Код: Выделить всё
XmlPullParser prepareXpp() {
return context.getResources().getXml(R.xml.data);
}
Код: Выделить всё
package com.example.example;
import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
public class Test {
Context context;
String tmp = "";
final String LOG_TAG = "myLogs";
public void parse(){
try {
XmlPullParser xpp = prepareXpp();
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
switch (xpp.getEventType()) {
// начало документа
case XmlPullParser.START_DOCUMENT:
Log.d(LOG_TAG, "START_DOCUMENT");
break;
// начало тэга
case XmlPullParser.START_TAG:
Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
+ ", depth = " + xpp.getDepth() + ", attrCount = "
+ xpp.getAttributeCount());
tmp = "";
for (int i = 0; i < xpp.getAttributeCount(); i++) {
tmp = tmp + xpp.getAttributeName(i) + " = "
+ xpp.getAttributeValue(i) + ", ";
}
if (!TextUtils.isEmpty(tmp))
Log.d(LOG_TAG, "Attributes: " + tmp);
break;
// конец тэга
case XmlPullParser.END_TAG:
Log.d(LOG_TAG, "END_TAG: name = " + xpp.getName());
break;
// содержимое тэга
case XmlPullParser.TEXT:
Log.d(LOG_TAG, "text = " + xpp.getText());
break;
default:
break;
}
// следующий элемент
xpp.next();
}
Log.d(LOG_TAG, "END_DOCUMENT");
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
XmlPullParser prepareXpp() {
return context.getResources().getXml(R.xml.data);
}
}
Код: Выделить всё
package com.example.example;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Test test = new Test();
test.parse();
}
}
klblk писал(а):В классе Test сделай конструктор куда будет передаваться контекст:
[syntax=java]public Test(Context context) {
this.context = context;
}[/syntax]
в Activity:
Test test = new Test(this);
т.е. контекстом будет данное активити.
п.с. Экземпляр класса назвать test это нормально (и то лучше testMyClass или чтото типа того), но называть сам класс Test не есть гуд.
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<test>
<testName>Название теста</testName>
<testDescription>Описание теста</testDescription>
<questions>
<question>Вопрос 1
<a>Ответ 1</a>
<a>Ответ 2</a>
<a>Ответ 3</a>
<right>1</right>
<src>"1.jpg"</src>
</question>
<question>Вопрос 2
<a>Ответ 1</a>
<a>Ответ 2</a>
<a>Ответ 3</a>
<right>2</right>
<src>"2.jpg"</src>
</question>
<question>Вопрос 3
<a>Ответ 1</a>
<a>Ответ 2</a>
<a>Ответ 3</a>
<right>2</right>
<src>"3.jpg"</src>
</question>
</questions>
</test>
Код: Выделить всё
public String getQuestion(){
try {
XmlPullParser xpp = prepareXpp();
while (!(xpp.getEventType() == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("question"))){
switch(xpp.getEventType()){
case XmlPullParser.START_TAG:
if (xpp.getName().equalsIgnoreCase("question")){
xpp.next();
question = xpp.getText();
}
}
xpp.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return question;
}
Код: Выделить всё
public void onClick(View v) {
testName.setText(testParser.getQuestion()); //testName - это TextView
}
makandrey писал(а): По задумке при нажатии на кнопку должен загружаться следующий вопрос, но каждый раз грузиться только первый.
читай уроки дальше, там будет работа с файламиmakandrey писал(а): Вопрос 3 - В какую папку ресурсов лучше сохранить файлы с тестами? Предполагается что их будет много. На данный момент это папка res/xml
не та кодировка, гугли "java windows-1251 to utf-8"meerz писал(а):Здравствуйте
почему когда я парсю из интернета xml с русским текстом, в приложении отображаются кракозябры?