- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我使用 XML 绑定(bind)向导创建了 TXMLDocument 的后代。此类生成的文件将在根节点中声明命名空间,并为文档的其余部分创建简单、朴素的节点。
<?xml version="1.0"?>
<RootNode xmlns="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<SomeNode>
<AnotherNode>Value</AnotherNode>
</SomeNode>
</RootNode>
我完全可以阅读或验证它。但是,发送这些文件的处理器现在要求每个节点都以命名空间为前缀,以便正确处理文件。
<?xml version="1.0"?>
<NS:RootNode xmlns:NS="URL" xmlns:xsi="URL" xsi:schemaLocation="URL">
<NS:SomeNode>
<NS:AnotherNode>Value</NS:AnotherNode>
</NS:SomeNode>
</NS:RootNode>
我如何使用我的 TXMLDocument 后代完成此操作?我希望它不涉及手动编辑 10000 行生成的代码。
最佳答案
好吧,这个解决方案花了很长时间才被发现,但非常简单。
XML 数据绑定(bind)向导生成的代码将使用默认命名空间创建 xml。您可以通过检查生成单元中的 Get
、Load
和 New
函数来了解这一点。这三个都调用 GetDocBinding
,将 TargetNamespace
作为最终参数传递。 TargetNamespace
是一个全局常量字符串,其中包含从您提供给绑定(bind)向导的架构或 xml 文档中提取的 URI。
因为 TargetNamespace
被分配给根元素作为默认命名空间,所以子元素不会有前缀。
实现方式:
FDocumentName :=
NewXMLDocument.GetDocBinding(
'ns:DocumentName', // <-- Just add the prefix to the root node.
TXMLDocumentName,
TargetNamespace) as IXMLDocumentName;
现在根节点看起来像:
<ns:DocumentName xmlns:ns="URI">
并且所有子节点在创建时都会有前缀。
关于xml - 如何使用 TXMLDocument 向每个节点添加 namespace 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3989012/
最近,我们将代码从 Delphi 2009 升级到 Delphi XE,并更新了我们的 Indy 组件(不确定这是否相关)。 但从那时起,我们在 Windows Server 2003 计算机上加载和
我尝试创建一个 xml 文档来访问 web 服务。我无法像我想要的那样获得结果 xml。 :-) 这是我用来创建此文档的 delphicode。 xmlQuery.Active := true;
我在解析 XML 时遇到问题。 如何获取字段值se_url和phrase? 我需要获取 link1_1、link1_2、key1、link2_1、link2_2、key2...在 se_url 和 p
这个问题在这里已经有了答案: XML: MSXML Not Installed (3 个回答) Delphi : load xml file within a thread (1 个回答) Using
如果我逐行构建 XML,我可以设置编码,但是当我从文件加载它时,我无法添加编码。看: procedure TForm1.Button1Click(Sender: TObject); var x
在 Delphi XE 中是否可以使用带有 TXmlDocument 的 XPath组件? 我知道我可以使用后期绑定(bind)来访问 MSXML2,然后使用 XPath: XML := Create
我有一些使用 Delphi 的 TXMLDocument 类的工作代码,并使用 TransformNode 方法执行 XSLT 转换。 但是,我需要启用 XSLT Javascript 函数( 标签
我有一个对象要删除: XMLDoc = new TXMLDocument(NULL); 但我不知道该怎么做...它不起作用: delete XMLDoc; XMLDoc->free(); 当我尝试只
我注意到可以将同一个节点多次添加到同一个 TXMLDocument 中 - 这是个好主意吗? n := XMLDocument1.CreateElement('Test', ''); XMLD
我有一个从第三方网络服务器收到的 XML 数据包: ..... 为了能够跨平台,这个 XML 被加载到 Delphi
我是delphi新手,现在我必须阅读create an xml。我的代码如下: function foo.createXMLDocument(): TXMLDocument; var res:
我正在运行时创建 TXMLDocument 的实例,以加载和解析 XML 文件。您可以检查以下代码: unit Unit1; interface uses Windows, Message
我使用 XML 绑定(bind)向导创建了 TXMLDocument 的后代。此类生成的文件将在根节点中声明命名空间,并为文档的其余部分创建简单、朴素的节点。 Value
我正在使用 TXMLDocument 编写一个在网络服务器中使用的 XML 字符串。当服务器收到请求时创建组件,生成 XML,将其传递回客户端,然后组件被释放。然而,当这个组件被释放时,我得到了 In
我想将版本和编码添加到使用 TXMLDocument 组件创建的 xml 文件 目前我正在做这个 XmlDoc :=TXMLDocument.Create(nil); XmlDoc.Versio
这个 XML“有效”吗? Todd . R . Colas 我从来没有见过一个节点有多个“值”的 XML 文档,就像 那样。节点。 如何解析出 的三个
当我尝试读取带有 DTD 的 XML 文档(eagle 文件)时出现错误: Project xx raised exception class EDOMParserError with message
我有遗留代码(不是我写的)始终包含编码属性,但将其重新编译为 D2010,TXMLDocument 不再包含编码。因为 XML 数据在标签和数据上都有重音字符,所以 TXMLDocument.Load
这在 Delphi XE2 中对我不起作用。 Var XMLDoc : IXMLDOCUMENT; begin XMLDoc := NewXMLDocument; XMLDoc.Activ
我有一些包含格式良好的 XML 的文本字符串。 我希望能够 (1) 将这些字符串转换为 IXMLNodes,然后 (2) 将它们附加到现有的 XMLDocument。最好不要先声明新的 XMLDocu
我是一名优秀的程序员,十分优秀!