我有一些包含格式良好的XML的文本字符串。
我希望能够(1)将这些字符串转换为IXMLNodes
,然后(2)将它们附加到现有的XMLDocument
。最好不要先声明新的XMLDocument
。
这似乎不可能?
有没有简单的方法来完成相同的东西?我最初的想法是使用IXMLNode.XML
(字符串)属性并插入新字符串。没有这样的运气,因为IXMLNode.XML
是只读的。
以下是一个示例,如果我在TStringList
中有以下字符串,
<Property Name="Version" RttiType="tkString"></Property>
<Property Name="ShowSubunit" RttiType="tkBoolean"></Property>
我已经将以下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>
任何其他(简单)方法来实现这一点(请不要对XML属性进行受保护的黑客攻击)?
谢谢!
答案 0 :(得分: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);
答案 1 :(得分:0)
结帐SimpleStorage。目前它与OmniXML绑定,但其功能强大。你想要的是这样的:
CurrentNode.Append(StorageFromXML('<Node>Content</Node>'));
一行代码。