XML Support — DOM Parsing

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

📄 第 422 页 🎬 视频课程

课程章节介绍

我们这节课来聊聊 Apex 里一个很实用的工具——Dom 类,全称是 Document Object Model,用它可以解析和生成完整的 HTML 或者 XML 文档。这在做接口集成、处理 HTTP 响应时特别有用。 我们先看怎么解析。比如你通过 HTTP 请求拿回了一段 HTML,怎么把它变成程序能懂的结构呢?你可以用 `getBodyDocument()` 方法,直接从响应里提取出文档对象,这就是整棵节点树的入口。拿到文档后,你会得到一个根元素,比如 ``,然后就可以通过它的名字,或者带命名空间的方式,一层层访问子元素了。注意,标签之间的文本在 DOM 里并不是直接挂在元素上的,而是一个单独的文本节点,你要拿文本内容的话,需要用相应的方法把它取出来。 再说创建。如果你想自己拼装一个 HTML 文档,比如要作为 HTTP 请求的 body 发出去,就得用构造器新建一个 `Dom.Document` 对象,然后创建根元素。这里有个小细节,如果涉及命名空间,建根元素的时候最好带上命名空间的 URI 和前缀,这样能保证唯一性。接着,你可以用 `addChildElement()` 方法给它加子元素,一层套一层,形成嵌套结构。想放文字内容的话,就用 `addTextNode()` 来添加一个文本节点。整个文档建好之后,可以通过 `setBodyDocument()` 把它塞到一个 HTTP 请求里,再发出去。 这里我再强调一下节点和元素的区别:元素是那些带尖括号的标签,比如 `

`,而它里面的文字是另一个节点,叫文本节点。它们共同构成一棵树,解析或生成的时候要分清这两种节点。 另外,Apex 里对多层嵌套的支持是有限制的,最多支持 50 层深度的嵌入式标记。也就是说,你不能无限地 `

` 套 `
`,超过 50 层就会报错,在设计结构时要注意这一点。 好了,这就是今天的内容,Dom 类让我们能直接操作 HTML 文档结构,非常灵活。你可以试着用它处理一些简单的 XML 解析或者动态生成 HTML 的场景,会很有帮助。

关键词

Apex Salesforce Developer Guide