使用Delphi2009,我试图获得一个声明的名称空间前缀,以应用于我正在创建的IXMLDocument中的文档元素。一旦创建了document元素,我就可以声明一个带有前缀的名称空间,但是它不会应用于document元素,并且我似乎不能更改document元素的前缀。如果我使用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:“应用于Import标记。有什么建议吗?
谢谢。
发布于 2010-06-29 06:40:13
您可以在调用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;https://stackoverflow.com/questions/3119314
复制相似问题