Как установить префикс элемента документа в Delphi - PullRequest
2 голосов
/ 25 июня 2010

Используя 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:" применяется к тегу импорта.Есть предложения?

Спасибо.

1 Ответ

3 голосов
/ 29 июня 2010

Вы можете указать префикс пространства имен во время вызова 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...