我打算问一个完全不同的问题,但神奇地设法解决了这个问题。所以,一个新问题。
所以我正在开发一个带有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"/>
我想提取一些网址。有谁知道我会怎么做?
非常感谢,
答案 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);
}
}
}