XML Support — Reading & Writing Streams

DEX455 - JSON、XML、ZIP、加密与正则表达式完全指南

📄 第 421 页 🎬 视频课程

课程章节介绍

同学们,今天我们来看看在Salesforce Apex里怎么用流的方式去读写XML。你平常处理数据的时候,遇到XML结构不想一股脑全装进内存,就可以用这两个类:XmlStreamReader和XmlStreamWriter。 先讲XmlStreamReader,它就像一个只能向前翻页的电纸书,你只能一页一页往后读,不能回头,这就是“前向只读”。它通过事件来告诉你读到了什么,比如START_ELEMENT表示一个标签开始了,END_ELEMENT表示标签结束,CHARACTERS表示遇到了一段文本,还有ATTRIBUTE这些事件。你在用的时候一定要养成一个好习惯:每次调用next()跳到下一个事件之前,先用hasNext()检查一下是不是已经读到结尾了,不然就越界报错,就像翻书翻过最后一页一样。要拿到标签的名字,我们用getLocalName();如果想取属性值,就调getAttributeValue();遇到元素里面的文字内容,就用getText()把它们拿出来。这些方法都很直接,一看名字就知道是做什么的。 再说XmlStreamWriter,它正好相反,是用来“盖房子”,一步一步把XML结构搭出来。你得按顺序来:先writeStartDocument,表示文档开始;然后如果用到命名空间,就用带命名空间的writeStartElement写开始标签;接着如果有属性就writeAttribute,有文字内容就writeCharacters;最后别忘了writeEndElement结束这个标签,以及整个文档结束的writeEndDocument。这样一套流程走下来,一个完整的XML就生成好了。这个类还支持写处理指令、DTD、注释,甚至可以直接写空元素。 最后记住一个小限制:Apex的流式XML处理最多只能支持50层节点的嵌套,如果你写的XML层层套得太深,超过50层就会报错,所以在设计结构时要留心。 好啦,这就是XmlStreamReader和XmlStreamWriter的基本用法,理解了事件的顺序和这些方法的职责,你就能轻松地在Apex里流式处理XML了。

关键词

Apex Salesforce Developer Guide