`

解析字符串类型的xml数据

    博客分类:
  • XML
阅读更多

在做一般的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 DOCUMENTorg.w3c.dom.Document

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

// 字符串转XML
String xmlStr = \"......\";
Document document = DocumentHelper.parseText(xmlStr);

// XML 转字符串
Document document = ...;
String text = document.asXML();

这里的XML DOCUMENTorg.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 DOCUMENTorg.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 DOCUMENTjavascript 版的XMLDOM

分享到:
评论

相关推荐

    数据解析,小型 XML 解析库

    Mini-XML 是一个小型 XML 解析库,您可以使用它来读取应用程序中的 XML 数据文件或字符串,而无需大型非标准库 读取 UTF-8 和 UTF-16 并写入 UTF-8 编码的 XML 文件和字符串。 数据存储在链表树结构中,保留 XML ...

    SQL Server解析XML数据的方法详解

    主要介绍了SQL Server解析XML数据的方法,结合实例形式详细分析了SQL Server针对xml数据的读取,遍历,删除,查找等常用操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    webservice是用dom4j返回xml字符串

    WebService在传递数据的时候只能传递字符串,当我们返回一些简单的字符串时我们可以直接返回,但是当我们想返回比如List,Map等复杂类型的数据时拼接字符串就是个很麻烦的工作,这时我们就用到了dom4j这个工具。

    ORACLE操作XML函数

    XMLTYPE_instance:XML数据类型的字段,用于保存XML ,XPath_string:操作的节点路径,例如:/info/Owner。 绝对路径与相对路径:区别在于路径字符串最前面的斜杠是否存在,有斜杠代表绝对路径,没有斜杠则是相对路径...

    ORACLE 存储过程返回结果集,拼接为字符串输出为clob

    大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...

    xml入门教程/xml入门教程

    #PCDATA 可解析字符串。 1)DTD的调用 方式一:调用内部文档类型定义。 <?xml version="1.0" standalone="yes"?> <!DOCTYPE studinfo[<!ELEMENT studinfo (#PCDATA)>]> 注意点: (1) studinfo与(#PCDATA)有...

    XML高级编程pdf

    2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 2.6.2 实体引用 2.7 处理指令 2.8 注释 2.9 CDATA部分 2.10 文档结构 2.10.1...

    xml入门经典-part3(中文版)

    2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 2.6.2 实体引用 2.7 处理指令 2.8 注释 2.9 CDATA部分 2.10 文档结构 2.10.1...

    XML应用技术考试试题

    A.CDATA数据类型表示可以使用任意的字符串 B.属性在元素中的排列与它声明的先后顺序无关 C.内部DTD的声明一定要位于文档的XML声明之后和第一个元素之后 D.非解析实体XML处理器不会对它进行解释 6.下列不存在的实体是...

    XML 高级编程(高清版)

    2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 2.6.2 实体引用 2.7 处理指令 2.8 注释 2.9 CDATA部分 2.10 文档结构 2.10.1...

    XML高级编程 (Extensible Markup Language)

    2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 2.6.2 实体引用 2.7 处理指令 2.8 注释 2.9 CDATA部分 2.10 文档结构 2.10.1...

    fast-xml-parser:验证XML,将XML解析为JSJSON或反之亦然,或者快速将XML解析为Nimn,而无需基于CC ++的库且没有回调

    您可以将标记或属性的值解析为原始类型:字符串,整数,浮点数,十六进制或布尔值。 并且可以选择解码为HTML char。 您可以在解析时从标记或属性名称中删除名称空间 它支持布尔属性(如果已配置)。 如何使用 要在...

    CMarkup解析xml

    当前位置允许你增加一个元素到文档中的这个位置,而不需要明确指出增加对象到文档的这点上,在CMarkup的有效生命周期里,对象一直保持着一个用来描述文档的字符串,当你调用GetDoc.可以得到它。

    springboot后台接收axios传递的json数据为null

    在前端传入的是json字符串,后台按字符串string参数接收再解析。 请求头contentType设置为application/x-www-form-urlencoded;charset=utf-8。 后台接收请求的方法的参数可以用String类型 @RequestBody 是作用在形参...

    Tinyxml 源代码(VC6 & VS2005)

    老版本的TinyXML“保留”了字符实体,而在新版本中它们会被转化成字符串。 另外,所有字符都可以用它的Unicode编码数字来指定, " "和" "都表示不可分的空格字符。 打印 TinyXML有几种不同的方式来打印输出,...

    XML高级编程

    2.3.8 字符串 29 2.4 字符数据 29 2.5 属性 30 2.5.1 特殊属性 31 2.5.2 空白 33 2.5.3 行尾的处理 34 2.6 字符引用和实体引用 34 2.6.1 字符引用 34 2.6.2 实体引用 34 2.7 处理指令 35 2.8 注释 36 2.9 CDATA部分 ...

    XML实用大全----xml详细参考书

    4.1.3 XML数据的组织... 46 4.2 数据的XML化... 48 4.2.1 开始编写文档:XML声明和根元素... 48 4.2.2 联赛(League)、(分部)Division和(球队)Team数据的XML化... 49 4.2.3 球员数据的XML化... 52 4.2.4 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    分别是XML快速入门,XML的概念,XML的术语,XML的实现,XML的实例分析。最后附录介绍了XML的相关资源。作者站在普通网页设计人员的角度,用平实生动的语言,向您讲述XML的方方面面,帮助你拨开XML的神秘面纱,快速...

    使用axios发送post请求,将JSON数据改为form类型的示例

    通常最常见的是”application/json”格式,也就是通过JSON字符串形式。 在控制台看到的数据就是这样: 有的时候后台需要Form形式的数据才能正常解析,所以前端需要在传过去时修改一下格式。开始我以为是修改...

    XMl实用大全(资料全易学习)

    14.11.2 数字到字符串的变换 486 14.12 对输出元素排序 488 14.13 CDATA和<符 491 14.14 方式 493 14.15 使用xsl:variable定义常数 496 14.16 命名模板 496 14.16.1 参数 498 14.17 删除和保留空白 501 14.18 选择 ...

Global site tag (gtag.js) - Google Analytics