XmlSchema的驗證器(Delphi實現)

2021-04-12 12:00:03 字數 1697 閱讀 6649

有段時間前,自己想要做乙個xmlschema的驗證器,首先想到的就是delphi的vcl中是否已經有現成的函式或者物件,經過一番查詢,發現裡面只封裝了dom中的document,對於與document密切相關的schema幾乎看不到蹤影

既然沒有現成的可以用,那麼我就用微軟留給我們的程式設計介面(1)對於xml檔案,我們都知道微軟提供了dom(文件物件模型)來訪問遍歷它,而對於xml schema檔案來說,其實它也是個xml檔案,所以我們依舊可以用dom來去訪問它(2)dom的早期版本中並沒有乙個schemas的屬性,只有到了msxml4.dll及以後的版本才提供了這個屬性,所以早期版本的dom是不能夠驗證xmlschema,要用domdocument40物件

下面**示例:

varidomdoc40: domdocument40;

ischemadoc: domdocument40;

idomparseerror: ixmldomparseerror ;

ischemacache: xmlschemacache40;

snamespace: string;

// ixmlschema: ischema;

begin

ischemadoc := codomdocument40.create;

ischemadoc.async := false;

ischemadoc.validateonparse := false;

ischemadoc.load('address.xsd');

//得到命名空間

snamespace := ischemadoc.documentelement.getattributenode('xmlns:xs').value;

ischemacache := coxmlschemacache40.create;

ischemacache.add(snamespace, ischemadoc);

//  ixmlschema := ischemacache.getschema(snamespace);

idomdoc40 := codomdocument40.create;

idomdoc40.async := false;

//主要是下面這兩行**

idomdoc40.validateonparse := true;

idomdoc40.schemas := ischemacache;

idomdoc40.load('address.xml');

idomparseerror := idomdoc40.parseerror;

if idomparseerror.errorcode = 0 then

showmessage('驗證成功');

//如果驗證失敗,還可以通過下面的資訊來定位錯誤的地方

//   idomparseerror.reason;

//   idomparseerror.srctext;

//   idomparseerror.line;

end;

使用XML Schema驗證XML資料輸入

現在xml使用的越來越多,在sql server表中我們可以建立xml列儲存資料。昨天在論壇看到有人說建立了乙個儲存過程處理xml,但是插入目標表的時候報錯,而報的錯誤不詳細。其實這個問題的根本原因是xml的資料有問題,應該在插入的時候對輸入的資料進行驗證 對於使用者輸入的資料一定要做驗證 其實sq...

大致的XML SCHEMA介紹

1 xml schema簡介 xml schema是w3c制定的基於xml格式的xml文件結構描述標準。作為一種文件描述語言,通常我們將其簡寫為xsd xml schema define xsd作為dtd 文件型別定義 的替代者,已經廣泛地應用到各種商業應用。2 如何使用xsd 看一下以下xsd檔案...

XML schema學習的部分總結

剛剛學了xml schema模式,為了方便分享。在此總結一下我學習的經驗。首先schema文件都必須要使用schema元素作為其根元素。哎,直接上 吧,來的直接,嘿嘿,這裡需要特別的注意,這個語句必須在此結束。因為後面定義的是他的資料型別,不結束的話後面編譯就會出現錯誤,在這點上我吃了不少虧,嗚嗚。...