我有一個Delphi XE應用程序,它讀取經過驗證的XML文件,並對其進行修改並保存。保存的版本可以被驗證。我使用SML Spy創建文件並驗證它。如何在XML文檔中創建xmlns:xsi和xsd信息
現在我需要在內存中創建一個文檔並保存它。問題是我無法弄清楚如何爲文檔生成xmlns和xsd信息屬性,以便驗證它。
我有一個Delphi XE應用程序,它讀取經過驗證的XML文件,並對其進行修改並保存。保存的版本可以被驗證。我使用SML Spy創建文件並驗證它。如何在XML文檔中創建xmlns:xsi和xsd信息
現在我需要在內存中創建一個文檔並保存它。問題是我無法弄清楚如何爲文檔生成xmlns和xsd信息屬性,以便驗證它。
其實,儘管我上面評論我發現最簡單的方法不是DeclareNamespace
。
下面是一個甚至不在表單上使用TXMLDocument
的示例。只需添加xmldom
,XMLIntf
和XMLDoc
您實現使用(用於XE2 Xml.xmldom
,Xml.XMLIntf
,並Xml.XMLDoc
)子句,然後這個工程:
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"/>
這樣做。這有點令人困惑,因爲你的例子有兩個xmlDoc(一個在uses子句中,一個在按鈕Var中),但是在我把它分類出來之後 - sweet –
您使用的是哪個XML庫?它們在設計上有所不同 –
我使用Delphi XE的一部分TXMLDocument。 –