xml属于可变的 取里面的big值及num值
如:11271
也可能是
11271271
11271271271<
simple.xml
[code="java"]
1
1
271
271
271
[/code]
用JAVA实现的
[code="java"]
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
2012-08-16
*/
public class SaxParseXml extends DefaultHandler{
private String big;
private List list;
private String mark;
//只调用一次 初始化list集合
@Override
public void startDocument() throws SAXException {
list=new ArrayList();
}
//调用多次 开始解析
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if(attributes.getValue(0) != null){
mark = qName;
big = attributes.getValue(0);
}
}
//调用多次
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
mark = null;
}
//只调用一次
@Override
public void endDocument() throws SAXException {
}
//调用多次
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(mark !=null){
String date=new String(ch,start,length);
String[] str = {big,date};
list.add(str);
}
}
public void getParser(){
}
public static void main(String[] args) {
SAXParser parser = null;
try {
//构建SAXParser
parser = SAXParserFactory.newInstance().newSAXParser();
//实例化 DefaultHandler对象
SaxParseXml parseXml=new SaxParseXml();
//加载资源文件 转化为一个输入流
InputStream stream=SaxParseXml.class.getClassLoader().getResourceAsStream("simple.xml");
//调用parse()方法
parser.parse(stream, parseXml);
//遍历结果
for(String[] str:parseXml.getList()){
System.out.println(str[0] + "," + str[1]);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getBig() {
return big;
}
public void setBig(String big) {
this.big = big;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
[/code]
为什么要转成array?
如果真的要转。给你一个思路:就解析xml,可变和不可变一样啊,你把xml中每个都转换成一个属性存放在list即可。
例如:
//当然你得写这么一个转换方法,做一个通用的,成为自己的东西,将xml解析成下面的TAG标签。
List listTag = new XMLTag(str).paser().getTagByList();
亲,这样就随便它有多少个number节点了撒~
[code="js"]
var responseXML = '<?xml version="1.0" encoding="UTF-8"?>' +
'' +
'1' +
'2' +
'3' +
'';
var xmlDoc;
if (window.DOMParser){
parser = new DOMParser();
xmlDoc = parser.parseFromString(responseXML,"text/xml");
}else{ // Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(responseXML);
}
var data = new Array();
var level = xmlDoc.getElementsByTagName("level");
for(var i= 0; i < level.length; i++){
if(level[i] && level[i].nodeType == 1){
var childNumbers = level[i].childNodes;
for(var j= 0; j < childNumbers.length; j++){
var childNumber = childNumbers[j];
var numberArray = new Array();
var bigAttr = childNumber.getAttribute("big");
numberArray.push(bigAttr);
// alert value
var values = childNumber.childNodes;
for(var k= 0; k < values.length; k++){
if(values[k].nodeType == 3){// value
numberArray.push(values[k].nodeValue);
}
}
data.push(numberArray);
}
}
}
for(var n = 0; n < data.length; n++){
alert("第" + (n + 1) + "个number:" + data[n]);
}
[/code]