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

标签 delphi msxml xmlnode xmlnodelist txmldocument

我有一些包含格式良好的 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 属性进行 protected 黑客攻击)?

谢谢!

最佳答案

除非您手动解析 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);

关于delphi - 字符串到 xmlNode delphi(或如何将 xml 片段添加到 TXMLDocument),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16743380/

相关文章:

java - 使用 XPath 更改文本内容

xml - 检查 XSLT 中是否存在 XML 节点

multithreading - 线程池、线程安全队列、OOP

德尔福/MSXML : XPath queries fail

delphi - 如何在 Delphi 中停止使用 IVBSAXXMLReader 解析 XML 文档?

javascript - IXMLDOMDocument2 到字符串 javascript

linq - 如何使用 LINQ 选择特定的子节点?

delphi - TCustomListbox 项目的自定义绘图

api - GDI+如何查询像素

android - Delphi & Datasnap - 连接超时、通信超时或避免客户端应用程序在没有服务器响应时挂起的方法