Swift XMLParser 无法解析整个字符串

Swift XMLParser cannot parse the whole string

我尝试解析 let contentString = "<p>abcdefg</p><p>hijklmn</p><p>123456</p>",它们是 html 个标签,带有 XMLParser
当我在 XMLParserDelegate 方法中打印标签之间的元素名称和内容时,只打印了第一个标签(p,abcdefg)

let contentString = "<p>abcdefg</p><p>hijklmn</p><p>123456</p>"
if let data = contentString.data(using: .utf8) {
    let parser = XMLParser(data: data)
    parser.parse()
}

XMLParserDelegate 方法

func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
    print(elementName)
}

func parser(_ parser: XMLParser, foundCharacters string: String) {
    print(string)
}

console log
p
abcdefg

我不知道为什么解析器在第一个标签处停止解析(p)

您的代码有很多问题,但主要问题是您的 contentString 无效 XML。因此,没有好的方法告诉 XMLParser 解析整个字符串。

(实际上我对它所做的事情印象深刻。它没有窒息,而是一直解析到 XML 的有效性结束,然后停止。)

有效XML必须由一个根元素组成;例如

<root><p>abcdefg</p><p>hijklmn</p><p>123456</p></root>

一旦你修改了你的 XML 是有效的,你将需要考虑如何处理委托以便解析 that XML.但那是另一回事。