2013-12-11 42 views
0

我有一個XML文件,其中一些節點可以有屬性的靈活一些靈活的數反序列化XML文件,都開始用相同的前綴:與屬性

<node a1="" a2="" ... an=""></node> 
  1. 我怎麼能體現這一點XML架構?
  2. 什麼是這種xml文件反序列化到C#中的對象的最佳方法?

回答

1

據我所知,你不能反映直接在XML模式;每個屬性都必須按名稱聲明。你可以在Schematron中表達它,但不能在DTD或XSD中表達;對RelaxNG並不確定。

如果這個想法是聲明「任何名稱爲'a'後跟一個數字的屬性」,這就像試圖在編程語言或數據庫中聲明一組類似的變量。很少有辦法爲這樣的(可能是無限的)集合執行「元」聲明。

如果你能最大,像99個這樣的屬性強加,你可以宣佈所有這些單獨的 - 但是這是相當難看,而且也不能保證一個元素將依次使用它們。

如果這些屬性的值只是標記(數字,名稱或類似),則「XML-ish」方式將聲明一個IDREFS或NMTOKENS類型的屬性,該屬性允許任意數量的此類標記價值。

一旦你得到的值,作爲Soontz表示數組或可能詞典/哈希將是一個明智的地方,讓他們。

2

關於你的第二個問題 - 你可能要存儲在例如那些節點字符串或Dictionary<string,string>陣列映射屬性名稱值,使用XmlSerializer序列化,並實現在你的類IXmlSerializable接口讀取和手動編寫XML。