У меня есть XMLParser со Swift, который отлично работает.Однако время от времени появляются узлы, имена которых совпадают с реальными узлами, которые я хочу.Поэтому, когда появляются эти дополнительные узлы, все портится.Вот пример хорошего сценария.Это было немного упрощено, чтобы помочь объяснить.
<master>
<inputs>
<input>
<input>
</inputs>
<overlays>
<overlay number="1">4</overlay>
<overlay number="2">7</overlay>
</overlays>
</master>
Но иногда это происходит и портит мой код.
<master>
<inputs>
<input>
<overlay index="0"/>
</input>
</inputs>
<overlays>
<overlay number="1">4</overlay>
<overlay number="2">7</overlay>
</overlays>
</master>
Мне нужно выбрать только «Наложение» в элементах «Наложения» и извлечь значение между тегами.Я не знаю, как выбрать это конкретно.Вот две основные функции синтаксического анализатора, которые у меня есть на данный момент, где отмечается общий узел «Наложение» вместо конкретных «Наложений»
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
if elementName == "overlay" {
OverlayValue = ""
}
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
OverlayValue?.append(string)
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "overlay" {
OverlayXML.append(OverlayArray(value: OverlayValue!))
OverlayValue = nil
}
}