android 解析xml返回对象
时间: 2023-07-22 08:03:52 浏览: 107
在 Android 中,我们通常使用 SAX 或 DOM 解析器来解析 XML 文件,然后将其转换为对象。以下是使用 SAX 解析器将 XML 转换为对象的示例代码:
1. 创建一个类来表示 XML 中的元素:
```
public class MyElement {
private String name;
private String value;
private List<MyElement> children;
public MyElement(String name, String value) {
this.name = name;
this.value = value;
children = new ArrayList<>();
}
public void addChild(MyElement child) {
children.add(child);
}
// Getters and setters
...
}
```
2. 创建 SAX 解析器并解析 XML 文件:
```
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
MyElement currentElement = null;
Stack<MyElement> stack = new Stack<>();
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
MyElement element = new MyElement(qName, "");
if (currentElement != null) {
currentElement.addChild(element);
}
stack.push(currentElement);
currentElement = element;
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if (!stack.empty()) {
currentElement = stack.pop();
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if (currentElement != null) {
currentElement.setValue(new String(ch, start, length));
}
}
};
parser.parse(new InputSource(new StringReader(xmlString)), handler);
// Retrieve the root element
MyElement rootElement = handler.getRootElement();
// Do something with the root element
...
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
```
在这里,我们创建了一个 `DefaultHandler` 的实例,并重写了 `startElement`、`endElement` 和 `characters` 方法来构建我们的对象树。最后,通过调用 `handler.getRootElement()` 方法获取根元素的引用,我们就可以使用这个对象进行进一步的操作了。
阅读全文