首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi中设置文档元素的前缀

如何在Delphi中设置文档元素的前缀
EN

Stack Overflow用户
提问于 2010-06-25 23:32:42
回答 1查看 4.4K关注 0票数 2

使用Delphi2009,我试图获得一个声明的名称空间前缀,以应用于我正在创建的IXMLDocument中的文档元素。一旦创建了document元素,我就可以声明一个带有前缀的名称空间,但是它不会应用于document元素,并且我似乎不能更改document元素的前缀。如果我使用doc.CreateElement(nodename,namespaceURI)来创建文档元素,它会添加指定的URI作为文档的默认名称空间,这不是我想要做的。我要创建的这个文档将被添加到另一个已经具有默认名称空间的文档中。

代码语言:javascript
复制
  Result := NewXMLDocument;
  eleDoc := Result.CreateElement(TAG_IH_IMPORT, NS_HISTORIAN);
  eleDoc.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);

其中TAG_IH_IMPORT和NS_HISTORIAN是字符串常量,eleDoc: IXMLNode和FNamespacePrefix: String。

其输出如下所示:

代码语言:javascript
复制
<Import xmlns="uri" xmlns:h="uri" />

我真的希望将"h:“应用于Import标记。有什么建议吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-06-29 06:40:13

您可以在调用CreateElement()时指定名称空间前缀,即:

代码语言:javascript
复制
Result := NewXMLDocument;
eleDoc := Result.CreateElement(FNamespacePrefix + ':' + TAG_IH_IMPORT, NS_HISTORIAN);
eleDoc.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);
Result.DocumentElement := eleDoc;

或者,您可以创建一个临时文档节点,声明其子节点的前缀,向其添加子节点,然后将其指定为新的文档节点。例如:

代码语言:javascript
复制
Result := NewXMLDocument;
eleTemp := Result.CreateElement('temp', '');
eleTemp.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);
eleDoc := eleTemp.AddChild(TAG_IH_IMPORT, NS_HISTORIAN);
Result.DocumentElement := eleDoc;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3119314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档