【问题标题】:How to parse <yandex:full-text> tag in android xml pool parser如何在 android xml 池解析器中解析 <yandex:full-text> 标签
【发布时间】:2015-05-05 05:34:42
【问题描述】:

我可以解析以下标签(&lt;item&gt;, &lt;title&gt;),但我无法解析带有命名空间(&lt;yandex:full-text&gt;)命名空间的标签,

xmlns:yandex="http://news.yandex.ru". 

谁知道如何解决这个问题?

谢谢,

【问题讨论】:

  • 我正在尝试使用命名空间解析 xml 标签,例如:example

标签: android xml parsing


【解决方案1】:

检查这个。

示例 XML 数据

<current>
   <city id="2643743" name="London">
      <coord lon="-0.12574" lat="51.50853"/>
      <country>GB</country>
      <sun rise="2013-10-08T06:13:56" set="2013-10-08T17:21:45"/>
   </city>
   <temperature value="289.54" min="289.15" max="290.15" unit="kelvin"/>
   <humidity value="77" unit="%"/>
   <pressure value="1025" unit="hPa"/>
</country>

在这里,我假设您有 xml 数据的输入流。

InputStream stream = conn.getInputStream();

            XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
            XmlPullParser myparser = xmlFactoryObject.newPullParser();

            myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES
            , false);
            myparser.setInput(stream, null);
            parseXMLAndStoreIt(myparser);
            stream.close();

以上代码将 XML 数据流设置为 PullParser 并发送到函数 parseXMLAndStoreIt()。

parseXMLAndStoreIt(XmlPullParser)

public void parseXMLAndStoreIt(XmlPullParser myParser) {
      int event;
      String text=null;
      try {
         event = myParser.getEventType();
         while (event != XmlPullParser.END_DOCUMENT) {
            String name=myParser.getName();
            switch (event){
               case XmlPullParser.START_TAG:
               break;
               case XmlPullParser.TEXT:
               text = myParser.getText();
               break;

               case XmlPullParser.END_TAG:
                  if(name.equals("country")){
                     country = text;
                  }
                  else if(name.equals("humidity")){     
                     humidity = myParser.getAttributeValue(null,"value");
                  }
                  else if(name.equals("pressure")){
                     pressure = myParser.getAttributeValue(null,"value");
                  }
                  else if(name.equals("temperature")){
                     temperature = myParser.getAttributeValue(null,"value");
                  }
                  else{
                  }
                  break;
                  }      
                  event = myParser.next(); 

              }
                 parsingComplete = false;
      } catch (Exception e) {
         e.printStackTrace();
      }

   }

【讨论】:

  • 这个例子解析一个简单的标签,需要解析带有命名空间example xml的标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
相关资源
最近更新 更多