在 Swift 中使用 XMLParser 处理文档时,有没有办法扩展 XML 实体?我在 API 中没有看到任何内容,但我很难相信这是一个奇怪的要求。
如果直接从 Swift 使用 libxml2 API,则可以完成此操作,库通过字符回调提供扩展实体,就像它内联出现一样。
这是我的示例代码:
let xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<!DOCTYPE simple [" +
"<!ENTITY e \"entity\">" +
"]>" +
"<root><val>&e;</val></root>"
class ParserDelegate : NSObject, XMLParserDelegate {
var entities = [String:String?]()
var text: String?
func parser(_ parser: XMLParser, foundInternalEntityDeclarationWithName name: String, value: String?) {
self.entities[name] = value
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
text = text == nil ? string : self.text! + string
} …
Run Code Online (Sandbox Code Playgroud)