写一个很简单的例子记录一下XML的创建与解析。
创建与解析其实是两个互逆的过程,会了其中一个对应的就能写出来。
创建用XmlSerializer xmlSerializer=Xml.newSerializer();
解析用XmlPullParser xmlPullParser=Xml.newPullParser();
[java] view plaincopy
package com.example.xmlborn;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import android.R.xml;
import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
Button xmlpullButton;
private String result;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String resource=produceXML();
textView=(TextView) findViewById(R.id.text);
xmlpullButton=(Button) findViewById(R.id.button1);
xmlpullButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
result=parseXML();
if (result!=null) {
textView.setText(result);
}else {
Toast.makeText(getApplicationContext(),"null",1000).show();
}
break;
default:
break;
}
}
private String produceXML() {
// TODO Auto-generated method stub
StringWriter writer=new StringWriter();
XmlSerializer xmlSerializer=Xml.newSerializer();
ArrayList<Beauty> list=getData();
try {
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("UTF-8",true);
xmlSerializer.startTag(null,"beauties");
for (Beauty beauty:list) {
xmlSerializer.startTag(null,"beautyname");
xmlSerializer.text(beauty.getNameString());
xmlSerializer.endTag(null,"beautyname");
xmlSerializer.startTag(null,"age");
xmlSerializer.text(beauty.getAge());
xmlSerializer.endTag(null,"age");
}
xmlSerializer.endTag(null,"beauties");
xmlSerializer.endDocument();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return writer.toString();
}
private ArrayList<Beauty> getData() {
// TODO Auto-generated method stub
ArrayList<Beauty> list=new ArrayList<Beauty>();
Beauty lily=new Beauty("lily","23");
Beauty lucy=new Beauty("lucy","36");
list.add(lily);
list.add(lucy);
return list;
}
private String parseXML() {
result="通过pull解析结果为:";
String xmlString=produceXML();
StringReader in=new StringReader(xmlString);
XmlPullParser xmlPullParser=Xml.newPullParser();
try {
xmlPullParser.setInput(in);
int type=xmlPullParser.getEventType();
while (type!=XmlPullParser.END_DOCUMENT) {
String nodeName=xmlPullParser.getName();
switch (type) {
case XmlPullParser.START_TAG:
if("beautyname".equals(nodeName)){
result +="姓名:"+xmlPullParser.nextText();
}if ("age".equals(nodeName)) {
result +="年龄:"+xmlPullParser.nextText();
}
break;
}
type=xmlPullParser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
// TODO Auto-generated method stub
}
class Beauty{
String nameString,age;
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Beauty(String nameString, String age) {
super();
this.nameString = nameString;
this.age = age;
}
}
}
代码地址:http://download.csdn.net/detail/u010095768/5534015
分享到:
相关推荐
DOM解析XML和创建XML是Web开发中的基础技能,尤其在处理动态数据和接口交互时,理解并掌握DOM与XML的结合应用至关重要。在实际项目中,我们可能还需要结合其他技术,如XSLT(用于转换XML)和XPath(用于在XML文档中...
深入理解XML解析器的源代码有助于开发人员更有效地处理XML数据,优化性能,以及解决与XML解析相关的错误。同时,这也有助于学习XML规范,提升软件工程能力。通过分析和修改这些源代码,可以定制化解析器以满足特定...
这种方式非常适合于简单的XML解析任务,且代码更加简洁。以下是一个基本的PULL解析示例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory....
本压缩包提供了XML解析与生成的四种方式的代码示例,这些都是Android Studio项目中的常见操作。 1. DOM解析 DOM(Document Object Model)是XML的一种树型结构表示,通过加载整个XML文档到内存,可以方便地访问和...
XMLParser可能是一个封装了TinyXML或其他XML解析库的自定义类,它可能提供了更高级别的接口,使得与XML数据交互更加直观。例如,它可能会有如下的API: - `parseFile(const std::string& filePath)`: 加载并解析XML...
在实际应用中,你可能还需要了解其他相关知识,如XML命名空间、DTD(Document Type Definition)或XSD(XML Schema Definition)验证、DOM与SAX解析方式的区别等。总之,这个压缩包提供的代码将是一个实用的起点,...
总的来说,将XML转换为Delphi代码涉及到XML解析、数据结构映射和源码生成等多个步骤。这需要对XML语法、Delphi的面向对象编程以及代码生成技术有深入的理解。通过这样的工具,开发者可以提高代码的复用性,简化数据...
8. **对比DOM解析**:与DOM解析相比,这个简易解析器可能更节省内存,因为DOM会加载整个XML文档到内存中形成一个树形结构,而这个解析器可能采用事件驱动的方式,按需读取XML数据,减少了内存占用。 9. **扩展性**...
在本文中,我们将深入探讨如何使用TinyXML2来解析和创建XML文件,特别是涉及到CDATA区段和元素的多属性处理。 首先,让我们了解XML的基本概念。XML(Extensible Markup Language)是一种用于存储和传输结构化数据的...
4. **SAX解析**:与DOM不同,SAX解析器不将整个XML文档加载到内存,而是通过事件回调函数处理每个元素的开始和结束、处理属性等。在易语言中,我们需要定义一系列的事件处理函数,如`开始文档`、`结束文档`、`开始...
本篇文章将详细探讨如何在JavaScript中解析XML文件,并提供一个完整的代码示例。 首先,我们需要了解JavaScript中的两个核心对象:`DOMParser`和`ActiveXObject`。`DOMParser`是现代浏览器支持的标准方法,用于在...
在这个项目中,开发者可能创建了一个用户界面,通过按钮或其他控件触发XML解析操作,展示如何在实际应用中使用XML解析器。 `WindowsFormsApplication1`可能是项目的主程序文件,通常为`.cs`后缀,其中包含了程序的...
2. **创建XML对象**:通过`Create`语句创建XMLParser或XMLDOMDocument对象,这是解析XML文档的基础。例如: ```pb xmlParser = Create XMLParser ``` 3. **加载XML文档**:使用`LoadFromFile`或`LoadFromText`...
本资源“android xml 各种解析 经典完整代码”显然提供了一系列用于处理XML的Android代码示例,旨在帮助开发者更高效地理解和操作XML文档。下面将详细介绍Android中XML解析的几种主要方法及其应用。 1. DOM解析器...
这个库提供了一种高效且易于使用的API,可以方便地解析、创建和修改XML文档。 在`src`目录中,可能包含的是实现XML解析的Python源代码文件。这些文件可能定义了函数或类,用于读取XML文件,遍历XML树,以及提取特定...
4. XML事件处理:通过实现`XmlReaderSettings`的事件处理程序,可以在解析XML时执行操作,例如错误处理或数据验证。 5. LINQ to XML:VB.NET中的LINQ to XML提供了丰富的API,简化了XML操作,包括查询、修改和创建...
这些示例可能包括了创建解析器、注册事件处理器、读取XML文件、处理元素和属性等内容。通过学习这些代码,开发者可以了解到XML解析器的初始化、事件监听以及如何提取和操作XML数据。 在开发过程中,XML解析还涉及到...
本资源包含的"xml解析vc 源代码"提供了在VC环境下处理XML文件的方法。 XML解析主要有两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器将整个XML文档加载到内存中,形成一个树形结构...
而SAX解析则是事件驱动的,逐行读取文件,不创建完整的DOM树,适合处理大型XML文件。在这个案例中,我们提到的“xml解析还原代码”很可能采用了DOM解析方式,因为需要构建二叉树来存储数据。 接下来,我们将数据...