2010-01-19 40 views
0

我一直認爲XML文檔是存儲信息的一種便捷方式。現在我發現XML是一種「指導」我的應用程序的好方法。 Delicous。XML解析器:實現設計

我的問題是將XML解析集成到應用程序類中。我使用的是C#System.Xml接口,我認爲它很好,可移植(對吧?)。

是否有任何標準接口定義方法來組織遞歸xml標籤,或實現常見xml實現(可能在基類)的方法?

起初,我能想到寫它定義一個接口

void Read(XmlReader xml); 

void Write(XmlREader xml); 

什麼什麼關於嵌套的標籤,常用標記等等...

PS:我不認爲實現這個使用LINQ,除非在Mono中支持(如何確定)?

非常感謝! :)

+0

爲什麼不使用配置文件? – TrueWill 2010-01-19 19:02:41

+1

通過添加其他元素或屬性,可以輕鬆擴展XML。允許忽略未知元素(或屬性),提高與以前的應用程序版本的兼容性。 XML很容易理解和編寫。它可以表示許多結構,從列表到樹。 我的問題是如何設計應用程序以最好地支持對象序列化。現在我正在調查Binary Worrier提示。這是一個很好的解決方案,但XmlSerializer不允許私人字段存儲,而XmlReader允許更多的控制XML解析(但需要更多的代碼)。 – Luca 2010-01-20 17:56:09

回答

2

我想你可能會尋找Serialization,這是一個初學者Tutorial on Serialization

+0

我正在考慮編寫一個代理解析器(使用XmlReader),它調用處理元素和屬性的ipothetic IMyXmlObject交互方法。該處理在IMyXmlObject實現器中實現,該實現器使用接口實現來獲取數據。 序列化是一個很好的解決方案,但它不是我正在尋找的。根據XML的寫法,我必須有可能執行操作。 其他建議? – Luca 2010-01-20 17:59:57

0

二進制杞人憂天提到,XML序列化是一種簡單而有效的選擇。您也可以使用Mono中支持的Linq to XML since version 2.0(發佈於2008年10月)

0

使用xml來「指導」您的應用程序似乎倒退給我。如果這是我的目標,我會更傾向於使用IronPython腳本。通常,Xml旨在序列化數據。當然你可以通過xml編寫一種語言,但最終它是與系統作戰。你也會極力爭取方法(雖然很容易通過XmlSerializer設置屬性等)。

這裏的A 3 minute guide to embedding IronPython in a C# application顯示什麼可能,IMO,是一個更好的方式,通過單獨的腳本文件「指導」一個C#應用程序。