字符串之间带有标记的XMLElement

时间:2017-12-12 09:25:13

标签: swift macos cocoa nsxmlelement

我正在创建一个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!)

这很好用,但对于segEle我想在文本之间添加一些标签"Sample Text <ph x="1" type="x-LPH"/> Here",如果我们注意到我需要插入&#34; ph&#34;在字符串之间标记。

仅供参考:我尝试在字符串之间插入" <ph x=\"#\" type=\"x-LPH\"/> "此文字,但这并没有像输出xml文件中那样"ph"标记显示为&lt;ph x="0" type="x-LPH"/&gt; OBLIGATOIRE &lt;ph x="1" type="x-LPH"/&gt;(如果我们通知&#34;&lt;&#;;它被替换为&#34;&lt;&#34;并且&#34;&gt;&#34;被替换为&#34;&gt;&#34; )

任何人都可以告诉我们如何处理这个问题。

1 个答案:

答案 0 :(得分:2)

尝试向后设计它应该是怎样的:检查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
  4. 然后将所有3个孩子添加到父笔记segEle(不再需要stringValue)。