标签: ixmldomdocument

如何比较两个XML节点结构Delphi

有没有办法在Delphi中比较两个xml节点?

我正在使用MSXML解析器并将xml加载到IXmlDOMDocument2中.节点存储在IXmlDOMNode中.

如果有帮助的话,我可以使用Delphi的TXMLDocument.我不想下载任何第三方组件.

我只是想比较节点的结构,而不是值.

我看到了一个类似于Java的帖子/实用程序,但对于Delphi没什么.

谢谢!

xml delphi ixmldomnode txmldocument ixmldomdocument

5
推荐指数
1
解决办法
866
查看次数

如何将命名空间添加到 msxml DOMDocument?

如何将架构添加到IXMLDOMDocument?

例如,我想生成 XML:

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
   <Relationship Id="rId1" Type="Frob" Target="Grob"/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)

我可以构造 DOMDocument60 对象(伪代码)

DOMDocument60 doc = new DOMDocument60();

IXMLDOMElement relationships = doc.appendChild(doc.createElement("Relationships"));

IXMLDOMElement relationship = relationships.appendChild(doc.createElement("Relationship"));
   relationship.setAttribute("Id", "rId1");
   relationship.setAttribute("Type", "Frob");
   relationship.setAttribute("Target", "Grob");
Run Code Online (Sandbox Code Playgroud)

现在是如何添加命名空间的问题。

如何添加命名空间?

如果我执行明显的解决方案,请在关系节点上设置一个名为xmlns

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
Run Code Online (Sandbox Code Playgroud)

通过类似的东西:

relationships.setAttribute("xmlns", 
      "http://schemas.openxmlformats.org/package/2006/relationships");
Run Code Online (Sandbox Code Playgroud)

文档保存时,导致生成的xml出错:

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
   <Relationship Id="rId1" Type="Frob" Target="Grob" xmlns=""/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)

xmlns在每个其他元素上放置空属性。在这个小测试文档中,它只会错误地应用xmlns到一个元素。在现实世界中,有数十个或数百万个具有空xmlns属性的其他元素。

命名空间URI属性

我尝试设置元素的namespaceURI属性Relationships

relationshps.namespaceURI := "http://schemas.openxmlformats.org/package/2006/relationships"; 
Run Code Online (Sandbox Code Playgroud)

但该属性是只读的

模式属性

文档确实有一个schemas属性,它获取或设置一个 …

winapi msxml ixmldomdocument

4
推荐指数
1
解决办法
2760
查看次数

Delphi,IXMLDOMDocument2,由于字符无效而导致加载失败

使用Delphi 2009和IXMLDOMDocument2

在将XML加载到IXMLDOMDocument2时,我收到"在文本内容中找到无效字符"错误.字符为1B(十六进制)并存在于CDATA部分中.Microsoft的XML查看器(IE)加载文件就好了.XML看起来像......

<data><child><![CDATA[-- ]]></child></data>

注意:我尝试粘贴XML,但删除了特殊字符.在CDATA部分,我的XML文件中有" - "后面的1B字符.

我已经尝试添加到XML和其他编码的开头,没有什么对我有用.有没有什么可以加载这个文件?

谢谢,迈克尔

xml delphi character ixmldomdocument

3
推荐指数
1
解决办法
1966
查看次数