Что такое localName этой строки XML? - PullRequest
1 голос
/ 04 октября 2011

Я собирался задать совершенно другой вопрос, но волшебным образом решил это. Итак, новая проблема.

Итак, я работаю над приложением для Android с парсером SAX. У меня есть XML-файл, который содержит в основном

<content:encoded>bla bla bla</content:encoded>

И я знаю, что могу использовать закодированное localName, чтобы получить его.

 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {

  if (localName.equalsIgnoreCase(descriptionId))
  {
        if (isItem){descriptionList.add(buff.toString());}
  }
... etc etc

но тогда есть это:

<enclosure url="SOME URL" length="100623688" type="audio/mpeg"/>

И я хочу извлечь НЕКОТОРЫЙ URL. Кто-нибудь знает, как я это сделаю?

Большое спасибо,

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Никогда не разрабатывался для Android, но если я вас правильно понимаю, вам нужно прочитать атрибуты этого элемента XML.

В методе startElement вашего SaxParser у вас будет аргумент "Атрибуты attrs" или что-то в этом роде (по крайней мере, это то, что я помню из Xerces SAX Parser).

Этот объект Attributes содержит различные ... атрибуты элемента =) Я думаю, что это реализовано на карте, но вы можете отладить это быстро.

Надеюсь, это поможет.

1 голос
/ 04 октября 2011

Здесь SOME URL - это значение URL-адреса атрибута, принадлежащего тегу enclosure.

Вот пример выборки из

http://www.exampledepot.com/egs/org.xml.sax/GetAttr.html

// Create a handler for SAX events
DefaultHandler handler = new MyHandler();

// Parse an XML file using SAX;
// The Quintessential Program to Parse an XML File Using SAX
parseXmlFile("infilename.xml", handler, true);

// This class listens for startElement SAX events
static class MyHandler extends DefaultHandler {
    // This method is called when an element is encountered
    public void startElement(String namespaceURI, String localName,
                             String qName, Attributes atts)  {
        // Get the number of attribute
        int length = atts.getLength();

        // Process each attribute
        for (int i=0; i<length; i++) {
            // Get names and values for each attribute
            String name = atts.getQName(i);
            String value = atts.getValue(i);

            // The following methods are valid only if the parser is namespace-aware

            // The uri of the attribute's namespace
            String nsUri = atts.getURI(i);

            // This is the name without the prefix
            String lName = atts.getLocalName(i);
        }
    }
}
...