3

XMLファイルを解析するためにAndroidでXmlPullParserを使用しています。私のxml内にサブタグがない場合、XmlPullParse.START_TAG問題なく実行されます.使用して開始タグをチェックし、適切な属性値を取得するだけです.画像リンクを含む属性です。そのサブタグからそのリンクを抽出できません。

これが私のXMLです:-

<section name="section1">
    <photo id="1" ilink="ImageLink 1"/>
    <photo id="2" ilink="ImageLink 2"/>    
</section>

<section name="section2">
    <photo id="3" ilink="ImageLink 1"/>
    <photo id="4" ilink="ImageLink 2"/>    
</section>

「セクション」である親タグと「名前」であるその属性を取得していますが、セクション名に従って「写真」タグを取得するにはどうすればよいですか?? つまり、「section2」という名前のセクションの写真タグを解析したい場合、どうすればこれを行うことができますか????

それを整理するのを手伝ってください。どんな助けもかなりのものです。

前もって感謝します。

4

2 に答える 2

2

あなたはxslを書くことができます

<xsl:template match="/">
  <xsl:for-each select="section">
    <xsl:value-of select="concat('link ',photo@id, ' from ',@name,' is ',photo@ilink)"><xsl:value-of> 
  </xsl:for-each>
</xsl:template>

xml で xsl を実行すると、出力はセクション 1 からのリンク 1 は ImageLink 1 ..セクション 2 からのリンク 4 は ImageLink 2 になります。

于 2013-08-22T22:48:59.393 に答える
2

これは、Android アプリケーションで機能するはずです。

MainActivity.java

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Sample
        SampleXMLPullParser.GetLinks("section2");
    }
}

SampleXMLPullParser.java

package com.example;

import java.io.StringReader;   
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

public class SampleXMLPullParser {

  public static void GetLinks (String section_name) {
    try {
      // Get the parser
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
      XmlPullParser xpp = factory.newPullParser();

      // XML data
      final String TAG_SECTION = "section";
      final String TAG_SECTION_ATTR_NAME = "name";
      final String TAG_PHOTO = "photo";
      final String TAG_PHOTO_ATTR_LINK = "ilink";
      final String inputXML = "<section name=\"section1\">"
                            +       "<photo id=\"1\" ilink=\"ImageLink 1\"/>"
                            +   "<photo id=\"2\" ilink=\"ImageLink 2\"/>"    
                            + "</section>"
                            + "<section name=\"section2\">"
                            +   "<photo id=\"3\" ilink=\"ImageLink 3\"/>"
                            +   "<photo id=\"4\" ilink=\"ImageLink 4\"/>"    
                            + "</section>";

      // Set the input
      xpp.setInput(new StringReader(inputXML));
      int eventType = xpp.getEventType();

      // Parser loop until end of the document
      boolean correctSection = false;
      while (eventType != XmlPullParser.END_DOCUMENT) {
        // Read the tag name
        String tagname = xpp.getName();

        // Check the event type
        if (eventType == XmlPullParser.START_TAG) {
          // Check 'section' tags
          if (tagname.equalsIgnoreCase(TAG_SECTION)) {
            // Opening tag, check the attribute
            String attrvalue = xpp.getAttributeValue(null, TAG_SECTION_ATTR_NAME);
            if (attrvalue.equals(section_name)) {
              // Section we're interested to
              correctSection = true;
            }
          }

          // Check 'photo' tags (only for the provided section)
          if (correctSection && tagname.equalsIgnoreCase(TAG_PHOTO)) {
            // Read the attribute and print on console
            String attrvalue = xpp.getAttributeValue(null, TAG_PHOTO_ATTR_LINK);
            System.out.println(attrvalue);
          }

        } else if (eventType == XmlPullParser.END_TAG) {
                       // Closing 'section' tag
                       if (correctSection && tagname.equalsIgnoreCase(TAG_SECTION))
                         correctSection = false;
        }

        // Move to next event
        eventType = xpp.next();
      }

    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

これにより、関数に渡すセクション引数に対応する 2 つのリンクがデバッグ出力に出力されます。

もちろん、あなたが望む方法でそれを適応させることができます。

于 2013-12-27T14:18:36.420 に答える