XML字符串和XML DOCUMENT的相互转换

作者:网络 来源:佚名 更新时间:2008-05-13 17:01:59 点击:
    在做一般的xml数据交换过程中,我更乐意传递xml字符串,而不是格式化的xml document。这就涉及到xml字符串和xml document的转换问题,说白了这是个很简单的问题,本文就各种xml解析器分别列举如下,以方便自己今后查阅。

  一、使用最原始的javax.xml.parsers,标准的jdk api

// 字符串转xml
string xmlstr = \"......\";
stringreader sr = new stringreader(xmlstr);
inputsource is = new inputsource(sr);
documentbuilderfactory factory = documentbuilderfactory.newinstance();
documentbuilder builder=factory.newdocumentbuilder();
document doc = builder.parse(is);

//xml转字符串
transformerfactory  tf  =  transformerfactory.newinstance();
transformer t = tf.newtransformer();
t.setoutputproperty(\"encoding\",\"gb23121\");//解决中文问题,试过用gbk不行
bytearrayoutputstream  bos  =  new  bytearrayoutputstream();
t.transform(new domsource(doc), new streamresult(bos));
string xmlstr = bos.tostring();

这里的xml document为org.w3c.dom.document

  二、使用dom4j后程序变得更简单

// 字符串转xml
string xmlstr = \"......\";
document document = documenthelper.parsetext(xmlstr);

// xml转字符串
document document = ...;
string text = document.asxml();

这里的xml document为org.dom4j.document

  三、使用jdom

jdom的处理方式和第一种方法处理非常类似

//字符串转xml
string xmlstr = \".....\";
stringreader sr = new stringreader(xmlstr);
inputsource is = new inputsource(sr);
document doc = (new saxbuilder()).build(is);

//xml转字符串
format format = format.getprettyformat();
format.setencoding(\"gb2312\");//设置xml文件的字符为gb2312,解决中文问题
xmloutputter xmlout = new xmloutputter(format);
bytearrayoutputstream bo = new bytearrayoutputstream();
xmlout.output(doc,bo);
string xmlstr = bo.tostring();

这里的xml document为org.jdom.document

  四、javascript中的处理

//字符串转xml
var xmlstr = \".....\";
var xmldoc = new activexobject(\"microsoft.xmldom\");
xmldoc.async=false;
xmldoc.loadxml(xmlstr);
//可以处理这个xmldoc了
var name = xmldoc.selectsinglenode(\"/person/name\");
alert(name.text);

//xml转字符串
var xmldoc = ......;
var xmlstr = xmldoc.xml

这里的xml document为javascript版的xmldom

注册会员,创建你的web开发资料库,