如何解决NSXMLParser报告错误的columnNumber
我正在尝试使用XMLParser
(NSXMLParser
)来解析一些XML,但是解析器的columnNumber
似乎不正确。考虑以下代码:
let string = #"<root><ac:structured-macro><ac:rich-text-body></ac:rich-text-body></ac:structured-macro><p></p></root>"#
class Delegate: NSObject,XMLParserDelegate {
func parser(_ parser: XMLParser,didStartElement elementName: String,namespaceURI: String?,qualifiedName qName: String?,attributes attributeDict: [String : String] = [:]) {
print("Parser started element \(qName ?? elementName) at column \(parser.columnNumber)")
}
}
let data = string.data(using: .utf8)!
let delegate = Delegate()
let parser = XMLParser(data: data)
parser.delegate = delegate
parser.shouldProcessNamespaces = true
parser.shouldReportNamespacePrefixes = true
parser.parse()
此打印:
Parser started element root at column 6
Parser started element ac:structured-macro at column 27
Parser started element ac:rich-text-body at column 46
Parser started element p at column 55
前三个元素的columnNumbers似乎正确,但是p
元素实际上不是从第55列开始,而是从第91列开始。第55列的字符是{{1 }}。
此行为正确吗?我是否缺少有关XML如何工作的信息,这将导致</ac:rich-text-body>
无法为此元素正确报告?还有其他方法来获取标签的正确开始列吗?还是这是columnNumber
中的错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。