gpt4 book ai didi

xml - Delphi中如何设置文档元素的前缀

转载 作者:行者123 更新时间:2023-12-03 18:34:16 24 4
gpt4 key购买 nike

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

  Result := NewXMLDocument;
eleDoc := Result.CreateElement(TAG_IH_IMPORT, NS_HISTORIAN);
eleDoc.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);

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

这个输出看起来像:
<Import xmlns="uri" xmlns:h="uri" />

我真的很想将“h:”应用于导入标签。有什么建议?

谢谢。

最佳答案

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

Result := NewXMLDocument;
eleDoc := Result.CreateElement(FNamespacePrefix + ':' + TAG_IH_IMPORT, NS_HISTORIAN);
eleDoc.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);
Result.DocumentElement := eleDoc;

或者,您可以创建一个临时文档节点,为其子节点声明前缀,向其添加一个子节点,然后将其分配为新文档节点。例如:
Result := NewXMLDocument;
eleTemp := Result.CreateElement('temp', '');
eleTemp.DeclareNamespace(FNamespacePrefix, NS_HISTORIAN);
eleDoc := eleTemp.AddChild(TAG_IH_IMPORT, NS_HISTORIAN);
Result.DocumentElement := eleDoc;

关于xml - Delphi中如何设置文档元素的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com