Элемент XMLE с тегами между строками

Я создаю документ XML и пытаюсь вставить теги между XMLElement, как показано ниже

let tEle = XMLElement.element(withName: "xuv") as? XMLElement
let segEle = XMLElement.element(withName: "seg") as? XMLElement
segEle?.stringValue = "Sample Text Here"
tuvEle?.addChild(segEle!)

Это работает нормально, но для сегле я хочу добавить несколько тегов между текстом, как "Sample Text <ph x="1" type="x-LPH"/> Here", если мы заметили, мне нужно вставить тег "ph" между строкой.

К вашему сведению: я пытался вставить " <ph x=\"#\" type=\"x-LPH\"/> " этот текст между строкой, но это не сработало, как в выходном XML-файле "ph" тег отображается как &lt;ph x="0" type="x-LPH"/&gt; OBLIGATOIRE &lt;ph x="1" type="x-LPH"/&gt; (если мы заметим, что для "<" он заменяется на "<", а для ">" заменяется на ">")

Может кто-нибудь, пожалуйста, дайте мне знать, как мы можем справиться с этим.

1 ответ

Решение

Попробуй обратным образом спроектировать, как это должно быть: проверить результат XMLElement(xmlString: "<seg>Sample Text <ph x=\"1\" /> Here") и его дети.

Sample Text <element/> Here
^^^^^^^^^^^^~~~~~~~~~~^^^^^
    |          |         |
    |          |         --------- Text node
    |          |
    |          ----- XMLElement
    |
    ----------- Text node
  • XMLElement подходит только для тегов;
  • XMLElement.addChild принимает более общий тип XMLNode,
  • XMLNode.Kind может быть .text, который вы ищете вместо простого stringValue,

Таким образом, вы должны разделить ваше простое строковое значение на 3 подузла:

  1. XMLNode.text(withStringValue: "Sample Text ") as? XMLNode
  2. XMLNode.element(withName: "Sample Text ") as? XMLElement
  3. XMLNode.text(withStringValue: " Here") as? XMLNode

Затем добавьте всех 3 детей в родительскую заметку segEle (который не нужен stringValue больше).

Другие вопросы по тегам