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.但那是另一回事。
我尝试解析 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.但那是另一回事。