-1
저는 이와 같이 보이는 XML을 구문 분석하려고합니다. xml의 올바른 형식은 파싱하는 방법입니다. 그리고 나는 xml의 형식이 무엇인지 알고 싶습니다.XML 파서에 문제가 있습니다.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">1|3|195,317,65,108|342,227,66,99|280,98,84,112</string>
내 XML 파서 활동 는
public class RetrieveFeed extends AsyncTask {
URL url;
ArrayList<String> headlines = new ArrayList();
ArrayList<String> links = new ArrayList();
@Override
protected Object doInBackground(Object[] objects) {
// Initializing instance variables
try {
url = new URL("http://54.179.134.139/viViewapi/api/values");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
// We will get the XML from an input stream
xpp.setInput(getInputStream(url), "UTF_8");
boolean insideItem = false;
// Returns the type of current event: START_TAG, END_TAG, etc..
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equalsIgnoreCase("html")) {
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("pre")) {
if (insideItem)
headlines.add(xpp.nextText()); //extract the headline
}
/*else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText()); //extract the link of article
}*/
} else if (eventType == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("html")) {
insideItem = false;
}
eventType = xpp.next(); //move to next element
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return headlines;
}
public InputStream getInputStream(URL url) {
try {
return url.openConnection().getInputStream();
} catch (IOException e) {
return null;
}
}
public ArrayList<String> heads()
{
return headlines;
}
}
내가이 접근 방식은 옳고 그름인지 몰라
제목에 문제가 있다고 표시되지만 문제가 무엇인지는 밝히지 않았습니다. 질문의 본문에 "xml의 형식이 무엇인지 알고 싶습니다."라고되어 있지만 SO에 대해서는 완전히 부적절한 질문입니다. XML의 형식을 설명하는 많은 참고 자료가 있습니다. –