2012-06-17 2 views
4

У меня есть приложение Delphi XE, которое считывает проверенный XML-файл, изменяет его и затем сохраняет его. Сохраненная версия может быть проверена. Я использую SML Spy для создания файла и проверки его.Как создать xmlns: xsi и xsd информацию в документе XML

Теперь мне нужно создать документ в памяти и сохранить его. Проблема в том, что я не могу понять, как сгенерировать атрибуты информации xmlns и xsd в документе, чтобы он мог быть проверен.

+0

Какую библиотеку XML вы используете? Они различаются по дизайну. –

+0

Я использую TXMLDocument, который является частью Delphi XE. –

ответ

6

На самом деле, несмотря на мой комментарий выше, я обнаружил, что самый простой способ сделать это был не с DeclareNamespace.

Вот пример, который даже не использует TXMLDocument на форме. Просто добавьте xmldom, XMLIntf и XMLDoc для вашей реализации использует пункт (Xml.xmldom, Xml.XMLIntf и Xml.XMLDoc для XE2), а затем это работает:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    TheDoc: IXmlDocument; 
    iNode: IXmlNode; 
    xmlText: DOMString; 
begin 
    TheDoc := NewXMLDocument; 
    TheDoc.Version := '1.0'; 
    TheDoc.Encoding := 'UTF-16'; 
    iNode := TheDoc.AddChild('test:test_file'); 
    iNode.SetAttributeNS('xmlns:test', '', 'http://www.foo.com'); 
    iNode.SetAttributeNS('xmlns:xsi', '', 'http://www.w3.org/2001/XMLSchema'); 
    TheDoc.SaveToXML(xmlText); 
    Memo1.Lines.Text := xmlText; 
end; 

Вышеуказанные результаты в этой продукции в TMemo:

<?xml version="1.0" encoding="UTF-16"?> 
<test:test_file xmlns:test="http://www.foo.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema"/> 
+0

Это сделало. Это было немного запутанно, потому что ваш пример имел два xmlDoc (один в предложении uses и один в кнопке Var), но после того, как я разобрал это - сладкий –