问题标签 [txmldocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1295 浏览

delphi - TXMLDocument 的替代品?

最近我们将代码从 Delphi 2009 升级到 Delphi XE 并更新了我们的 Indy 组件(不确定这是否相关)。

但是从那以后,我们在 Windows Server 2003 机器上加载和保存 XML 文件时遇到了错误。

以下是错误

与其他操作系统上的超过 600kb 相比,Windows Server 2003 上的 DLL msvcrt.dll 小得多(300kb 左右)......所以它在该文件中丢失了一些东西并导致错误......

有谁知道如何解决这一问题?TXMLDocument或者有没有我可以尝试的替代方法?

0 投票
2 回答
789 浏览

delphi - 使用 IXMLDocument 在 NTDLL 中的访问冲突

我在读取地址 0xfeeefeee 时不断遇到访问冲突,其中调试器在 Ntdll.NtRaiseException 上停止,我无法进一步调试,因为我得到一个循环条件告诉我应用程序在...处出现故障...使用步骤或运行...这让我回到了起点。这显然只发生在 IDE (Delphi XE2) 32 位中。我的应用程序正在使用以下代码

当文件打开时,我调用从 xml 数据绑定向导 (File New Other XML) 加载的函数来解析在上面的 proc 中打开的 xml 文件。我的意图只是创建一个 csv 文件,然后使用 sqlldr 将数据导出到 oracle 数据库。在 IDE 之外找到所有工作,我可以让应用程序运行,只是在一夜之间在 sring 网格中显示数据,但在 ide 中它会在几分钟内崩溃。调用堆栈没有显示任何有用的信息。如您所见,我尝试过 TXMDocument.create 和 NewXML,但无济于事。我尝试将对象放在表单上并使用该实例无济于事。任何人请有任何想法。(Windows 7 64 位,但由于 oracle 依赖,我正在编译为 32 位)

编辑,即使打开了调试 dcus,调用堆栈也显示没有任何用处,只是对 ole32.dll 和其他与 nt 相关的 dll 的引用

该应用程序的代码如下所示(其中一些)

openfile 由这种类型的过程调用

如前所述,我尝试使用 TXMDocument、IXMLDocument 并使用 Create 和 NewXMDocument,但这仍然会出现错误。DEbug dcus' 没有任何区别。我已经厌倦了在项目标题和 MadExcept 中使用 FastMM4,但他们没有发现错误。

0 投票
1 回答
1015 浏览

xml - How compare Two XML Node Structures Delphi

Is there a way to compare two xml nodes in Delphi?

I am using the MSXML parser and loading the xml into an IXmlDOMDocument2. The nodes are stored in an IXmlDOMNode.

I would be ok using Delphi's TXMLDocument if it helps. I do not want to download any third party components.

I just want to compare the structures of the nodes, not the values.

I saw a similar post/utility for Java, but nothing for Delphi.

Thank you!

0 投票
1 回答
4111 浏览

delphi - Indy Tidhttp 发布 XML 文件的正确编码是什么?

我注意到我在使用 Indy Client 的应用程序中的 XML 文件有无效字符(我实际上使用了 IdHttp 的默认参数)

这是我的代码:

我的 XML 文件是 UTF-8 编码的。

我必须做什么才能在我的服务器上获得良好的编码(我也使用 Indy 作为服务器)?

0 投票
2 回答
657 浏览

c++ - 删除 TXMLDocument 对象 Embarcadero

我有一个要删除的对象:

但我不知道该怎么做......它不起作用:

当我尝试删除对象时,程序崩溃。

所以这是我的一段代码。我有一堂课:

0 投票
2 回答
5157 浏览

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

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

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

这似乎不可能?

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

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

我有以下 XML,已经加载到 aTXMLDocument中,我怎么能轻松地将上面的两行附加到TXMLDocument下面?

任何其他(简单)方法来实现这一点(请不要对 XML 属性进行受保护的黑客攻击)?

谢谢!

0 投票
1 回答
2374 浏览

delphi - 在 TXMLDocument 中保留空格时出现 Delphi 异常

这是我之前帖子的后续:String to XmlNode Delphi (or how to add an x​​ml fragment to TXMLDocument) 开始一个新问题似乎很合适......

我本质上是将格式良好的 xml 片段添加到现有的 xmldocument 中。先前解决方案中建议的代码一直运行良好 - 直到 - 我将 [poPreserveWhiteSpace] 添加到 TXMLDocument.ParseOptions。

当我删除 [poPreserveWhiteSpace] 一切正常,但没有保留空白。它实际上将结束标签放在新行上。

这是目标 TXMLDocument 的代码片段。

我尝试了上面的 Options 和 ParseOptions 的不同组合,但我只能通过删除 [poPreserveWhiteSpace] 来使代码工作。

触发异常的代码是第二行:

在添加 xml 片段之前,我尝试创建对 LoadXMLData(..) 的返回值的引用,并将这些 ParseOptions 设置为匹配,但那里也没有运气。

有什么想法吗?

编辑:添加自包含示例代码来演示问题。明确的标题。 这是一些简化的代码。请注意,除非您注释掉包含 [poPreserveWhitespace] 的行,否则会有例外。**Edit2:根据 Remy 的建议调整代码以保留空格。调用 FormatXMLData 时仍然有问题。

生成的合并 XML 文件...空白属性值在格式化期间被清除(我确实需要格式化数据,它真的很难看)。

0 投票
2 回答
2811 浏览

delphi - 通过 TXMLDocument 访问 IXMLDOMDocument2?

我有一些使用 Delphi 的 TXMLDocument 类的工作代码,并使用 TransformNode 方法执行 XSLT 翻译。

但是,我需要启用 XSLT Javascript 函数(<msxml:script>标签)并且 - 经过大量谷歌搜索 - 这意味着我需要将AllowXsltScript属性设置IXMLDOMDocument2为 true。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms760290(v=vs.85).aspx

我已经成功地实现了这一点——但只能通过CreateDOMDocumentmsxmldom.pas.

显然这远远不能令人满意 - 那么如何在修改库代码的情况下访问 IXMLDOMDocument2 对象?

0 投票
1 回答
1710 浏览

xml - 尝试获取 xml 节点时访问冲突

我尝试开发一个助手来读取/写入和控制 TXMLDocument 的实例。我为这项工作编写了一个简单的单元。该单元有一个程序,将实例分配给全局变量,并设置一些变量用于文档控制。单位是:

过程 assignXml,工作正常:

但是, xmlWriteProyectoNode(...) 会爆炸应用程序:

当调用 writeXmlProyectoNode(...) 并出现访问冲突错误时,应用程序崩溃。在执行时间。Embarcadero 调试器说有冲突的行是:

我需要获取根元素,并且认为这是正确的方法...我在 Delphi 中是最新的,有什么想法吗?谢谢 !。

编辑:XML 创建(newXml类型为TXMLDocument

0 投票
4 回答
11881 浏览

delphi - 如何在 Delphi 中使用 TXMLDocument 将 Ansi 转换为 UTF 8

可以在 Delphi 6 中将 XML 转换为 UTF-8 编码吗?
目前这就是我正在做的事情:

  • 用 AnsiString 填充 TXMLDocument
  • 最后通过使用将数据转换为 UTF-8WideStringVariable = AnsiToUtf8(Doc.XML.Text);
  • WideStringVariable在文件开头使用TFileStream和添加将值保存到文件中BOM for UTF8

代码:

如果我在 Notepad++ 或其他检测编码的编辑器中打开文件,它会显示带有 BOM 的 UTF-8。但是,它似乎没有正确编码文本。

出了什么问题,我该如何解决?

更新:XML 属性: