3

私は何度も XML を解析しましたが、このタイプの XML を解析することはできませんでした。

タイプのXMLを何度も解析しました:

<a>
    <a1>abc</a1>
    <a2>abc</a2>
    <a3>abc</a3>
    <a4>abc</a4>
</a>

しかし、以下のタイプの xml の解析に関する知識はありません。

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <orders>
        <order id="1" xlink:href="http://192.168.1.9/prestashop/api/orders/1"/>
        <order id="2" xlink:href="http://192.168.1.9/prestashop/api/orders/2"/>
    </orders>
</prestashop>

質問: order 要素の横にある URL を取得するにはどうすればよいですか?

4

2 に答える 2

1

使用しSaxParserている DefaultHandler をサブクラス化する必要があり、内部で

    @Override
    public void startElement(String uri, String localName, String qName,
                    Attributes attributes) throws SAXException {
            if (qName.equalsIgnoreCase("order")) {
                   String href = attributes.getValue("xlink:href");
            } 

    }
于 2013-06-05T11:21:45.353 に答える
0

私は検索を行っており、XMlを使用して上記で述べたものを解析する方法を手に入れましたXMLPullParser

私のような人に役立つことを願って、ここに解決策を投稿しました。

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();

xpp.setInput(new StringReader (RESPONSE_STRNG_HERE));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) 
{
    if(eventType == XmlPullParser.START_DOCUMENT) 
    {
        System.out.println("Start document");
    } 
    else if(eventType == XmlPullParser.END_DOCUMENT) 
    {
        System.out.println("End document");
    } 
    else if(eventType == XmlPullParser.START_TAG) 
    {
        System.out.println("Start tag "+xpp.getName());
        Log.e("Count ",""+xpp.getAttributeCount());
        for(int ia=0;ia<xpp.getAttributeCount();ia++)
        {
            Log.e("Attribute Name ",xpp.getAttributeName(ia));
            Log.e("Attribute Value ",xpp.getAttributeValue(ia));
        }
    } 
    else if(eventType == XmlPullParser.END_TAG) 
    {
        System.out.println("End tag "+xpp.getName());
    } 
    else if(eventType == XmlPullParser.TEXT) 
    {
        Log.e("Text ",xpp.getText());
    }
    eventType = xpp.next();
}
于 2013-06-12T07:03:28.253 に答える