Здравствуйте уважаемые хабрчане.
Постигаю азы Java и программирования под Андроид.
Столкнул с очень интересной проблемой.
Делаю следующее — с помощью XmlPullParser парсю XML документ, проходя по всем эллементам, так как эллементов много, мне нужно делать сравнение названия эллементов. Так вот, читая xml заношу названия тегов в переменную, и сравниваю например:
if(tag=="v"){
System.out.println("Ура");
}
Но сравнение не срабатывает хоть убей.
Вывел в лог эту переменную, что бы посмотреть что в ней, и удивился, там именно
vLog.d(LOG_TAG, "TAG_NAME: " + tag);
if(tag=="v"){
System.out.println("Ура");
}
Так вот вопрос, почему не срабатывает сравнение никак понять не могу.
Сравнение не срабатывает ни с названием тегов, ни с названием аттрибутов, вообще!
Помогите пожалуйста!
Ниже привожу весь код.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et=(EditText) findViewById(R.id.editText1);
// находим список
ListView lvMain = (ListView) findViewById(R.id.lvMain);
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:
tag=xpp.getName();
tag=tag.trim();
et.setText(tag);
tmp = "";
System.out.println(tag);
if(tag=="v"){
System.out.println("Ура");
}
for (int i = 0; i < xpp.getAttributeCount(); i++) {
name=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());
name="";
istitle = false;
break;
// содержимое тэга
case XmlPullParser.TEXT:
if (tag=="v") {
output.add(xpp.getText());
}else{
Log.d(LOG_TAG, "TAG_NAME: " + tag);
}
break;
default:
break;
}
// следующий элемент
xpp.next();
}
Log.d(LOG_TAG, "END_DOCUMENT");
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, output);
// присваиваем адаптер списку
lvMain.setAdapter(adapter);
}
XmlPullParser prepareXpp() {
return getResources().getXml(R.xml.data);
}
ну и собственно сам xml файл:
<?xml version="1.0" encoding="utf-8"?>
<server xmlns:f="http://www.mysite.ru" >
<call-r>
<f:getProjects u="1" >
<v-r>
<v>
<v k="id" >1176004</v>
<v k="name" >какое то описание</v>
<v k="descr" ></v>
<v k="category" >2</v>
<v k="subcategory" >27</v>
<v k="city" ></v>
<v k="country" ></v>
<v k="cost" >50</v>
<v k="kind" >1</v>
<v k="offers_count" >5</v>
<v k="pro_only" >1</v>
<v k="post_date" >1338210266</v>
<v k="currency" >0</v>
<v k="logo" ></v>
<v k="is_pro" >0</v>
<v k="priceby" >4</v>
<v k="prefer_sbr" >0</v>
</v>
<v>
<v k="id" >1176004</v>
<v k="name" >какое то описание</v>
<v k="descr" ></v>
<v k="category" >2</v>
<v k="subcategory" >27</v>
<v k="city" ></v>
<v k="country" ></v>
<v k="cost" >50</v>
<v k="kind" >1</v>
<v k="offers_count" >5</v>
<v k="pro_only" >1</v>
<v k="post_date" >1338210266</v>
<v k="currency" >0</v>
<v k="logo" ></v>
<v k="is_pro" >0</v>
<v k="priceby" >4</v>
<v k="prefer_sbr" >0</v>
</v>
</v-r>
</f:getProjects>
<f:getProjects u="2" >
<v-r>
<v>
<v k="id" >1176004</v>
<v k="name" >какое то описание</v>
<v k="descr" ></v>
<v k="category" >2</v>
<v k="subcategory" >27</v>
<v k="city" ></v>
<v k="country" ></v>
<v k="cost" >50</v>
<v k="kind" >1</v>
<v k="offers_count" >5</v>
<v k="pro_only" >1</v>
<v k="post_date" >1338210266</v>
<v k="currency" >0</v>
<v k="logo" ></v>
<v k="is_pro" >0</v>
<v k="priceby" >4</v>
<v k="prefer_sbr" >0</v>
</v>
<v>
<v k="id" >1176004</v>
<v k="name" >какое то описание</v>
<v k="descr" > </v>
<v k="category" >2</v>
<v k="subcategory" >27</v>
<v k="city" ></v>
<v k="country" ></v>
<v k="cost" >50</v>
<v k="kind" >1</v>
<v k="offers_count" >5</v>
<v k="pro_only" >1</v>
<v k="post_date" >1338210266</v>
<v k="currency" >0</v>
<v k="logo" ></v>
<v k="is_pro" >0</v>
<v k="priceby" >4</v>
<v k="prefer_sbr" >0</v>
</v>
</v-r>
</f:getProjects>
<f:getMessFolders>
<v-r>
<v>
<v k="id" >24905</v>
<v k="fname" >offtop</v>
</v>
</v-r>
</f:getMessFolders>
</call-r>
</server>
Буду примного благодарен за помощь. Просто я совсем в недоумении почему не сравниваются строки, ведь и там и там
v
Может я где то ступил? Все таки конец рабочего дня?! Если так то скажите пожалуйста где?
P.S. Да, выше приведен говнокод, не обращайте на это внимание, это тестовый проект, притираюсь с Java и Android
Заранее благодарен всем!