안녕하세요.
안드로이드에서 mysql 디비에 텍스트를 저장해서 불러오는 것을 구현하고 있는데
1. 안드로이드에서 디비에 저장
2. php로 디비에 저장된 값을 불러옴
3. xml로 저장
4. 안드로이드에서 xml파싱
순서로 진행을 했습니다. 디비 컨넥트하고 xml까지 잘 저장이 되는데 안드로이드에서 불러올 때
Unexpected token (position:TEXT : parse error....라고 뜨고, 맞는데이터가 없을때 no data라고 결과값을 출력해오게 했는데 no data가 뜹니다.
아래는 XML파싱해오는 코드이고요.
private ArrayList<String> getXmlDataList(String filename, String str) {
String rss = SERVER_ADDRESS + "/";
ArrayList<String> ret = new ArrayList<String>();
try { // XML 파싱을 위한 과정
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
URL server = new URL(rss + filename);
InputStream is = server.openStream();
xpp.setInput(is, "UTF-8");
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
Log.d("xpp.getName() + str11111", xpp.getName() + "-----" + str);
if (xpp.getName().equals(str)) { // 태그 이름이 str 인자값과 같은 경우
Log.d("xpp.getName() + str22222", xpp.getName() + "-----" + str);
ret.add(xpp.nextText());
}
}
eventType = xpp.next();
}
} catch (Exception e) {
Log.e("Error4", e.getMessage());
}
return ret;
}
여기서 제가 xpp.getName() 로그를 찍어보니 br과 b박에 나오지 않습니다. 테그가 같은게 없어서 제가 잘못 하고 있는게 뭘까요...?
if (xpp.getName().equals(str))에서 str은 name과 price를 가져오는데
xpp.getName()는 br과 b가 들어와서 같은 테그가 없기 때문에 no data가 나오는것 같은데......br과 b가 찍히는 이유가 뭔지 잘 모르겠습니다.
아래는 PHP코드로 디비에 저장된 내용 SELECT하는 코드입니다.
<head>
<meta http-equiv = "content-Type" content = "text/html" charset = "utf-8">
</head>
<?
include "dbcon.php";
mysql_selectdb("testdb", $conn);
mysql_query("set names utf8");
$qry = "select * from test";
$result = mysql_query($qry, $conn);
$xmlcode = "<?xml version = \"1.0\" encoding = \"utf-8\"?>\n";
while($obj = mysql_fetch_object($result))
{
$name = $obj->name;
$price = $obj->price;
$xmlcode .= "<node>\n";
$xmlcode .= "<name>$name</name>\n";
$xmlcode .= "<price>$price</price>\n";
$xmlcode .= "</node>\n";
}
mysql_close($conn);
$dir = "D:/phpWebService";
$filename = $dir."/searchresult.xml";
$fp = fopen("$filename","w");
fputs($fp, $xmlcode);
fclose($fp);
?>
마지막으로 PHP에서 만든 XML파일은 이렇습니다.
<?xml version = "1.0" encoding = "utf-8"?>
<node>
<name>aaa</name>
<price>111</price>
</node>
<node>
<name>aaa</name>
<price>555</price>
</node>
<node>
<name>test</name>
<price>11</price>
</node>
<node>
<name>test111</name>
<price>11111</price>
</node>
<node>
<name>1</name>
<price>1</price>
</node>
<node>
<name>2</name>
<price>2</price>
</node>
<node>
<name>3</name>
<price>3</price>
</node>
<node>
<name>3</name>
<price>3</price>
</node>
<node>
<name>4</name>
<price>4</price>
</node>
<node>
<name>55</name>
<price>5</price>
</node>
<node>
<name>6</name>
<price>6</price>
</node>
<node>
<name>8</name>
<price>8</price>
</node>
<node>
<name>9</name>
<price>9</price>
</node>
<node>
<name>11</name>
<price>11</price>
</node>
<node>
<name>12</name>
<price>12</price>
</node>
<node>
<name>13</name>
<price>13</price>
</node>
<node>
<name>15</name>
<price>15</price>
</node>
<node>
<name>16</name>
<price>16</price>
</node>
<node>
<name>16</name>
<price>16</price>
</node>
<node>
<name>16</name>
<price>16</price>
</node>
<node>
<name>16</name>
<price>16</price>
</node>
<node>
<name>21</name>
<price>21</price>
</node>
<node>
<name>33</name>
<price>33</price>
</node>
<node>
<name>55</name>
<price>55</price>
</node>
<node>
<name>88</name>
<price>88</price>
</node>
<node>
<name>44</name>
<price>44</price>
</node>
<node>
<name>33</name>
<price>33</price>
</node>
<node>
<name>55</name>
<price>55</price>
</node>
<node>
<name>67</name>
<price>89</price>
</node>
<node>
<name>12</name>
<price>12</price>
</node>
며칠을 인터넷 찾아보고 해도 문제 없어보이는데 위 같은 Exception오류가 나는 이유가 뭘까요.....