2014-01-30 57 views
0

我正在嘗試開發一個網站,提供用戶界面來生成XML文件。用戶界面將要求各種XML元素中所需的數據。生成XML應遵循DTD規範。用戶界面獲取xml元素的數據在c#

所以這就是我所做的。

  1. 我將DTD轉換成XSD
  2. 我使用xsd.exe工具創建了C#類。

現在我的問題是如何在網頁上生成動態輸入框,以便從我創建的C#類中請求所需的元素數據。

我需要一些方法來知道所需和可選元素及其數據類型和屬性,以及所有來自我創建的C#類。

我希望你能得到我所要求的,謝謝你的期待。

+0

您能向我們展示生成的C#類嗎?使用自己的類將會更容易解釋。 –

+0

這是一個客戶端DTD,生成了太大的類(222kb),所以在這裏不能提供,對不起。 –

回答

0

請記住,來自xsd的大多數必需/可選語義在使用xsd.exe生成的類中丟失。你基本上有2個(+1編輯後)選項:

  1. 對你生成的類型使用反射來呈現每個屬性的UI元素。您必須手動管理/定義數據綁定
  2. 刪除xsd.exe類並通過遍歷xsd本身來生成UI元素。這樣你可以獲得有關可選/可空元素,基數等的更多信息。從UI輸入中手動構建你的結果xml(使用XDocument)。
  3. 混合方法:反映生成的結構類(更簡單的遍歷邏輯,不需要處理外部包含等)。轉至XSD的附加信息(你需要以某種方式找出其中的XSD找到你所需要的定義映射到當前屬性)

無論哪種方式,你選擇這不會是一件容易的事情你需要做很多工作才能實現。如果我們要進入XSD選擇元素等領域,您很快就會發現,沒有簡單的UI可以涵蓋所有可能的場景。

+0

非常感謝你,所以如果我選擇通過遍歷XSD生成輸入框,它可以提示我如何從XSD獲取所需的選項元素和數據類型。是否有任何方法可用於C#的xml類中。 –

+0

以及一個XSD是隻是和XML,所以你需要尋找相關的屬性,並閱讀它們的值。爲此也使用XDocument。還要檢查XmlSchema類以獲取更多類似xsd的語義。 –

+0

根據我的知識,DTD遵循一般標記,因此使用C#我們不能自己解析DTD。所以解析xsd是唯一的選擇,或者我可以解析DTD,如果你知道某種方式? –