2017-04-26 127 views
-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; 
} 

}

我不知道该方法是否是对还是错

+0

你的头衔说你有问题,但你没有说出什么问题。你的问题的主体说“我想知道什么是XML的格式”,但这是一个完全不适当的问题,因为有大量的参考资料解释了XML的格式。 –

回答

0

XML喜欢JSON至少需要一个根元件。在你的例子中你有一个叫做“string”的根元素,所以在这里没有问题。

查看此XML Syntax Guide快速XML教程。请注意,可以使用“字符串”,因为它不是保留字(请参见XML Reserved Words)。

您发布的XML片段是有效的XML。您可以使用此XML Validator验证XML。

你不一定需要xmlns property空间(namespace)这里,所以它可能成为:

<string>1|3|195,317,65,108|342,227,66,99|280,98,84,112</string> 

此XML只是描述一个字符串。如果你想描述一个字符串属性的对象,你将不得不像这样的XML:

<root> 
    <string>1|3|195,317,65,108|342,227,66,99|280,98,84,112</string> 
</root> 

如果您想了解更多关于从XML读取值,然后看看这个以前simple xml parsing堆栈溢出的答案。