1

したがって、この XML ファイルを解析しようとしています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ButtonDescs</key>
    <array>
        <string>See more information</string>
        <string>Talk to a sales person now</string>
        <string>Question about this vehicle?</string>
        <string>Schedule a Test Drive</string>
        <string>Get a quote for this vehicle</string>
        <string>Apply for a loan</string>
        <string>Calculate monthly payment</string>
        <string>Vehicle History Report</string>
    </array>
    <key>ButtonTitles</key>
    <array>
        <string>More Details</string>
        <string>Call Us</string>
        <string>Email Us</string>
        <string>Test Drive</string>
        <string>Get a Quote</string>
        <string>Finance Request</string>
        <string>Loan Calculators</string>
        <string>CarFax®</string>
    </array>
    <key>ButtonTypes</key>
    <array>
        <string>details</string>
        <string>phone</string>
        <string>vehicle_question</string>
        <string>test_drive</string>
        <string>quote</string>
        <string>credit_form</string>
        <string>loan_calculators</string>
        <string>carfax</string>
    </array>
</dict>
</plist>

私が使用しているパーサーは次のとおりです。

XmlPullParserFactory factory;
    try {
        factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();
        InputStreamReader inputStreamReader = new InputStreamReader(getUrlData(context, url));
        xpp.setInput(inputStreamReader);
        int eventType = xpp.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {
              if(eventType == XmlPullParser.START_TAG) {
                  if(xpp.getName().equalsIgnoreCase("key")) {
                      xpp.next();
                      if(xpp.getText().equalsIgnoreCase("ButtonDescs"))
                          btnMembers = ButtonMembers.DESCS;
                      else if(xpp.getText().equalsIgnoreCase("ButtonTitles"))
                          btnMembers = ButtonMembers.TITLES;
                      else if(xpp.getText().equalsIgnoreCase("ButtonTypes"))
                          btnMembers = ButtonMembers.TYPES;
                  } else if(xpp.getName().equalsIgnoreCase("array")) {
                      i = 0;
                  } else if(xpp.getName().equalsIgnoreCase("string")) {
                      if(btnMembers == ButtonMembers.DESCS) {
                          button = new InventoryDetailButton();
                          xpp.next();
                          button.setDescription(xpp.getText());
                          btnList.add(button);
                      } else if(btnMembers == ButtonMembers.TITLES) {
                          xpp.next();
                          btnList.get(i).setTitle(xpp.getText());
                      } else if(btnMembers == ButtonMembers.TYPES) {
                          xpp.next();
                          btnList.get(i).setType(xpp.getText());
                      }
                  }
              } else if(eventType == XmlPullParser.END_TAG) {
                  if(xpp.getName().equalsIgnoreCase("string")) {
                      i++;
                  } else if(xpp.getName().equalsIgnoreCase("array") && btnMembers == ButtonMembers.TYPES) {
                      return btnList;
                  }
              }
              eventType = xpp.next();
        }
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

URL をコピーしてブラウザーに直接貼り付けると、上記で貼り付けた XML が取得されます。ただし、パーサーがタグを調べ始めると、それは予期されたタグではありません。プロセスを進めると、xppオブジェクトにはhtml、 、metaなどの名前が付けられscriptます。タグに到達するscriptと、パーサーが爆発します。

これらのタグがどこから来ているのか、誰か知っていますか?

4

1 に答える 1