字符串到 xmlNode delphi(或如何将 xml 片段添加到 TXMLDocument)

sse*_*sse 5 delphi msxml xmlnodelist xmlnode txmldocument

我有一些包含格式良好的 XML 的文本字符串。

我希望能够(1)将这些字符串转换为IXMLNodes(2)将它们附加到现有的XMLDocument. 最好不声明新的XMLDocument第一个。

这似乎不可能?

有没有什么简单的方法可以完成等效的事情?我最初的想法是使用IXMLNode.XML(string) 属性并插入新字符串。IXMLNode.XML只读则不然。

这是一个例子,如果我在 a 中有以下字符串TStringList

<Property Name="Version" RttiType="tkString"></Property>
<Property Name="ShowSubunit" RttiType="tkBoolean"></Property>
Run Code Online (Sandbox Code Playgroud)

我有以下 XML,已加载到 中TXMLDocument,我如何轻松地将上面的两行附加到下面TXMLDocument

<Program Name="PFOO">
  <Class Name="CFOO">
    <Property Name="DBN" RttiType="tkString"/>
    <Property Name="SDate" RttiType="tkClass" ClassType="TXSDATE">12/30/1899</Property>
    <Property Name="XForm" RttiType="tkEnumeration">xfXML</Property>
    <Property Name="Singleton" RttiType="tkBoolean">True</Property>
  </Class>
</Program>
Run Code Online (Sandbox Code Playgroud)

还有其他(简单)方法可以实现此目的(请不要对 XML 属性进行受保护的黑客攻击)?

谢谢你!

Rem*_*eau 2

除非您手动解析 XML 片段,然后手动构造相关子节点/属性,否则您必须将片段加载到临时 XMLDocument 中,然后根据需要将其节点移动到主 XMLDocument。

更新:例如:

Node := XmlDocument1.DocumentElement.ChildNodes[0]; // <Class> node
Node.ChildNodes.Add(LoadXMLData('<Property Name="Version" RttiType="tkString"></Property>').DocumentElement);
Node.ChildNodes.Add(LoadXMLData('<Property Name="ShowSubunit" RttiType="tkBoolean"></Property>').DocumentElement);
Run Code Online (Sandbox Code Playgroud)