这个XML字符串的localName是什么?

时间:2011-10-03 20:22:09

标签: java android sax

我打算问一个完全不同的问题,但神奇地设法解决了这个问题。所以,一个新问题。

所以我正在开发一个带有SAX解析器的Android应用程序。我有一个主要包含

的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"/>

我想提取一些网址。有谁知道我会怎么做?

非常感谢,

2 个答案:

答案 0 :(得分:3)

从未为Android开发,但如果我理解正确,您需要阅读该XML元素的属性。

在SaxParser的startElement方法中,你将有一个参数“Attributes attrs”或类似的东西(至少这是我记得的Xerces SAX Parser)。

该Attributes对象包含元素的各种...属性=) 我认为它是通过Map实现的,但您可以快速调试。

希望它有所帮助。

答案 1 :(得分:1)

此处的某些URL是属于机柜标记的属性url的值。

以下是

的示例

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);
        }
    }
}