고수님들 보시기에 소스는 간단한거라 설명은 하지 않겠습니다.ㅠ
현재 4일 밤낮을 찾아보고 별짓 다해도 않되네요~ㅠ
XmlParsing.java
package com.exercise.app;
import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class XmlParsing extends Activity {
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
try
{
URL url = new URL("http://ebook.allabout.co.kr/autoalbum/rss/getPageInfo.html?UserDumy=asp001&aid=110921091952108");
SAXParserFactory parserModel = SAXParserFactory.newInstance();
SAXParser concreteParser = parserModel.newSAXParser();
XMLReader myReader = concreteParser.getXMLReader();
XMLHandler mySample = new XMLHandler(this);
myReader.setContentHandler(mySample);
myReader.parse(new InputSource(url.openStream()));
Log.i("TRACE", "Success");
}catch(Exception e)
{
tv.setText("Error: "+e.getMessage());
}
setContentView(tv);
}
public void updateTextView(String text)
{
tv.setText(text);
}
}
XMLHandler.java
package com.exercise.app;
import java.util.jar.Attributes;
import org.xml.sax.helpers.DefaultHandler;
public class XMLHandler extends DefaultHandler
{
private StringBuffer names = new StringBuffer();
private StringBuffer urls = new StringBuffer();
private boolean hastype = false;
private boolean hasfile = false;
private XmlParsing xp;
public XMLHandler(XmlParsing xp)
{
this.xp = xp;
}
public void startElement(String uri, String localName, String qName, Attributes atts)
{
if(localName.equals("item"))
{
hastype = true;
}
else if(localName.equals("url"))
{
hasfile = true;
}
}
public void endElement(String uri, String localName, String qName)
{
if(localName.equals("person"))
{
xp.updateTextView(names.toString()+"\n"+urls.toString());
}
}
public void characters(char[] chars, int start, int leng)
{
if(hastype)
{
hastype = false;
names.append(chars, start, leng);
}
else if(hasfile)
{
hasfile = false;
urls.append(chars, start, leng);
}
}
}
가져올 xml의 구문
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<item><link>0</link>
<category>161</category>
<width>450</width>
<height>613</height>
<magnify>2.8</magnify>
<date>2011-10-28-13-10-03</date>
</item>
<item><title>1</title>
<seqno>1</seqno>
<page>161</page>
<type>I</type>
<file>http:/ebook.allabout.co.kr/autoalbum/a_mode/pageImage/asp001/110921091952108/161/B_0.jpg</file>
</item>
Logcat
11-13 11:38:00.844: DEBUG/AndroidRuntime(551): --- registering native functions ---
11-13 11:38:01.443: DEBUG/dalvikvm(246): GC_EXPLICIT freed 76 objects / 3744 bytes in 107ms
11-13 11:38:01.473: DEBUG/PackageParser(59): Scanning package: /data/app/vmdl17297.tmp
11-13 11:38:01.554: INFO/PackageManager(59): Removing non-system package:com.exercise.app
11-13 11:38:01.554: INFO/ActivityManager(59): Force stopping package com.exercise.app uid=10043
11-13 11:38:01.574: INFO/Process(59): Sending signal. PID: 543 SIG: 9
11-13 11:38:01.594: INFO/UsageStats(59): Unexpected resume of com.exercise.XmlResourceParser while already resumed in com.exercise.app
11-13 11:38:01.624: INFO/WindowManager(59): WIN DEATH: Window{450619d0 com.exercise.app/com.exercise.app.XmlParsing paused=false}
11-13 11:38:01.653: WARN/InputManagerService(59): Got RemoteException sending setActive(false) notification to pid 543 uid 10043
11-13 11:38:01.994: DEBUG/PackageManager(59): Scanning package com.exercise.app
11-13 11:38:01.994: INFO/PackageManager(59): Package com.exercise.app codePath changed from /data/app/com.exercise.app-1.apk to /data/app/com.exercise.app-2.apk; Retaining data and using new
11-13 11:38:01.994: INFO/PackageManager(59): /data/app/com.exercise.app-2.apk changed; unpacking
11-13 11:38:02.004: DEBUG/installd(35): DexInv: --- BEGIN '/data/app/com.exercise.app-2.apk' ---
11-13 11:38:02.174: DEBUG/dalvikvm(558): DexOpt: load 25ms, verify 34ms, opt 1ms
11-13 11:38:02.183: DEBUG/installd(35): DexInv: --- END '/data/app/com.exercise.app-2.apk' (success) ---
11-13 11:38:02.183: WARN/PackageManager(59): Code path for pkg : com.exercise.app changing from /data/app/com.exercise.app-1.apk to /data/app/com.exercise.app-2.apk
11-13 11:38:02.183: WARN/PackageManager(59): Resource path for pkg : com.exercise.app changing from /data/app/com.exercise.app-1.apk to /data/app/com.exercise.app-2.apk
11-13 11:38:02.183: DEBUG/PackageManager(59): Activities: com.exercise.app.XmlParsing
11-13 11:38:02.203: INFO/ActivityManager(59): Force stopping package com.exercise.app uid=10043
11-13 11:38:02.433: DEBUG/dalvikvm(59): GC_FOR_MALLOC freed 9954 objects / 568736 bytes in 82ms
11-13 11:38:02.504: INFO/installd(35): move /data/dalvik-cache/data@app@com.exercise.app-2.apk@classes.dex -> /data/dalvik-cache/data@app@com.exercise.app-2.apk@classes.dex
11-13 11:38:02.504: DEBUG/PackageManager(59): New package installed in /data/app/com.exercise.app-2.apk
11-13 11:38:02.704: INFO/ActivityManager(59): Force stopping package com.exercise.app uid=10043
11-13 11:38:02.804: DEBUG/dalvikvm(116): GC_EXPLICIT freed 1938 objects / 108832 bytes in 73ms
11-13 11:38:03.034: DEBUG/dalvikvm(59): GC_EXPLICIT freed 4535 objects / 271584 bytes in 88ms
11-13 11:38:03.103: WARN/RecognitionManagerService(59): no available voice recognition services found
11-13 11:38:03.204: INFO/installd(35): unlink /data/dalvik-cache/data@app@com.exercise.app-1.apk@classes.dex
11-13 11:38:03.214: DEBUG/AndroidRuntime(551): Shutting down VM
11-13 11:38:03.214: DEBUG/dalvikvm(551): Debugger has detached; object registry had 1 entries
11-13 11:38:03.683: DEBUG/AndroidRuntime(564): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
11-13 11:38:03.683: DEBUG/AndroidRuntime(564): CheckJNI is ON
11-13 11:38:03.794: DEBUG/AndroidRuntime(564): --- registering native functions ---
11-13 11:38:04.254: INFO/ActivityManager(59): Force stopping package com.exercise.app uid=10043
11-13 11:38:04.254: INFO/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.exercise.app/.XmlParsing }
11-13 11:38:04.374: INFO/ActivityManager(59): Start proc com.exercise.app for activity com.exercise.app/.XmlParsing: pid=570 uid=10043 gids={3003}
11-13 11:38:04.393: DEBUG/AndroidRuntime(564): Shutting down VM
11-13 11:38:04.393: DEBUG/dalvikvm(564): Debugger has detached; object registry had 1 entries
11-13 11:38:04.414: INFO/AndroidRuntime(564): NOTE: attach of thread 'Binder Thread #3' failed
11-13 11:38:04.574: WARN/ActivityThread(570): Application com.exercise.app is waiting for the debugger on port 8100...
11-13 11:38:04.643: INFO/System.out(570): Sending WAIT chunk
11-13 11:38:04.653: INFO/dalvikvm(570): Debugger is active
11-13 11:38:04.844: INFO/System.out(570): Debugger has connected
11-13 11:38:04.844: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:05.056: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:05.297: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:05.505: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:05.716: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:05.928: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:06.152: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:06.369: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:06.583: INFO/System.out(570): waiting for debugger to settle...
11-13 11:38:06.786: INFO/System.out(570): debugger has settled (1365)
11-13 11:38:08.074: INFO/TRACE(570): Success
11-13 11:38:08.324: INFO/ActivityManager(59): Displayed activity com.exercise.app/.XmlParsing: 3959 ms (total 3959 ms)
11-13 11:38:13.464: DEBUG/dalvikvm(493): GC_EXPLICIT freed 304 objects / 13664 bytes in 105ms
11-13 11:38:18.483: DEBUG/dalvikvm(246): GC_EXPLICIT freed 156 objects / 11200 bytes in 110ms
11-13 11:38:23.493: DEBUG/dalvikvm(264): GC_EXPLICIT freed 35 objects / 1808 bytes in 111ms
엊그제도 올렸었는데.. 아무도 답변을 달아주지 않으셔서..ㅠ
다시 올리는 거에요..ㅠ 꼭 도와주세요~ㅠ




텍스트뷰 레이아웃 지정하셔야죠 :)
tv.setLayoutParams(new LayoutParams(...));
해주세요
UI 는 원하는대로 나오지 않는다면 가급적 루팅폰 / 에뮬레이터 통해서 Traceview 앱 써보시면 다 나옵니다 :)