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 回答