Android XmlPullParser 方式解析 Xml 文档
xml 文件格式
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="1"> <name>张三</name> <age>22</age> </person> <person id="2"> <name>李四</name> <age>20</age> </person> </persons>
XmlPullParser 方式解析 xml 文件
import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import com.eboy.domain.Person; import android.util.Xml; public class PersonService { public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; Person person = null; XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(xml, "UTF-8"); // 为Pull解释器设置要解析的XML数据 int event = pullParser.getEventType(); while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if ("person".equals(pullParser.getName())) { int id = Integer.valueOf(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if ("name".equals(pullParser.getName())) { String name = pullParser.nextText(); person.setName(name); } if ("age".equals(pullParser.getName())) { int age = Integer.valueOf(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if ("person".equals(pullParser.getName())) { persons.add(person); person = null; } break; } event = pullParser.next(); } return persons; } /** * 保存数据到xml文件中 * @param persons * @param out * @throws Exception */ public static void save(List<Person> persons, OutputStream out) throws Exception { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out, "UTF-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "persons"); for (Person person : persons) { serializer.startTag(null, "person"); serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name"); serializer.text(person.getName().toString()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); out.flush(); out.close(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
使用DOM4J的步骤 以下是使用DOM4J Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个SAXReader。 从文件或流创建文档。 通过调用document.selectNodes()获取使用XPath Expression获取所需的节点 提取根元素。 迭代节点列表。 检查属性。 检查子元素。 Import XML-related packages import java.
使用XPath的步骤 以下是使用XPath Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个DocumentBuilder。 从文件或流创建文档。 创建Xpath对象和XPath路径表达式。 使用XPath.compile()编译XPath表达式,并通过XPath.evaluate()评估编译的表达式获取节点列表。 迭代节点列表。 检查属性。 检查子元素。 Import XML
例子 (Demo Example) 这是我们需要解析的输入xml文件 - <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname>
使用JDOM的步骤 以下是使用JDOM Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个SAXBuilder 从文件或流创建文档 提取根元素 检查属性 检查子元素 Import XML-related packages import java.io.*; import java.util.*; import org.jdom2.*; 创建一个DocumentBuilder (
例子 (Demo Example) 这是我们需要解析的输入xml文件 - <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname>
使用JDOM的步骤 以下是使用JDOM Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个SAXBuilder。 从文件或流创建文档 提取根元素 检查属性 检查子元素 Import XML-related packages import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*; 创建一个Docume