2012-07-13 53 views
1

我有一個XMLReader類的奇怪問題。我從一個URL原子飼料,XML樹的一些元素被命名爲這樣的:使用C#XmlReader冒號問題(命名空間)

[XmlElement("element:id")] 

<element:title>Hello World!</element:title> 
<element:text>This is just an example</element:text> 
<element:id>1</element:id> 

林,但是這是行不通的,當我看到通過代碼我看讀者解析這是

element_x003A_id 

,但如果我使用

[XmlElement("element_x003A_id)] 

我什麼也沒得到。我試着擺弄Xml​​編碼,但屬性是隻讀的。我如何逃避這個,所以我可以得到元素的內容(如果元素沒有分號它工作得很好)?

+2

請參閱此鏈接:在XML命名空間(http://msdn.microsoft.com/en- us/magazine/cc302166.aspx) – 2012-07-13 07:11:19

+0

btw,':'是冒號;一個分號是';' – 2012-07-13 07:15:58

+0

謝謝你的信息L.B – Anonymous 2012-07-13 07:16:05

回答

4

element是一個名稱空間別名。某處,您(通常位於文件頂部)

<foo ... xmlns:element="http://something/blah/blog"> 

「http:// something/blah/blog」很重要。基本上,你需要:

[XmlElement("id", Namespace="http://something/blah/blog")] 
public int Id {get;set;} 

或者因爲它會被反覆使用:

const string MyNamespace = "http://something/blah/blog"; 
//... 
[XmlElement("id", Namespace=MyNamespace)] 
public int Id {get;set;} 
+0

謝謝,我很尷尬地錯過了這麼基本的東西。 – Anonymous 2012-07-13 07:15:39

+0

@匿名只是爲了記錄,除了讀者,別名'element'不重要。一個不同的文件可以完全合法**使用'xmlsn:evil = ...'和'' - 並且數據將** **相同​​*。這就是爲什麼'[XmlElement(...)]'知道*名稱空間*,但不需要知道*別名*的原因。事實上,你甚至不需要別名;它可能是''它仍然是完全相同的數據。 – 2012-07-13 07:19:52

+0

感謝您的澄清,添加命名空間完美的作品。 – Anonymous 2012-07-13 07:53:26