2011-02-28 102 views
2

我目前遇到麻煩Web服務調用反序列化一個XmlDocument,這裏是我的代碼: -XmlNodeReader對象返回{無}


public void getTest(XmlDocument requestDoc) 
    { 
     XmlDocument results = new XmlDocument(); 
     XmlSerializer serial = new XmlSerializer(typeof(DataRequest)); 
     DataRequest req; 
     XmlNodeReader reader = new XmlNodeReader(requestDoc.DocumentElement); 
     req = (DataRequest)serial.Deserialize(reader); 
     response.write(req.toString()); 
    } 

現在,我遇到的麻煩的是,XmlNodeReader對象只包含「 {None}「當我在調試中逐步完成時,requestDoc明確地具有預期的XML結構,任何想法?

親切的問候 吉布

+0

你考慮使用'LINQ到XML'代替'XmlDocument' – Stecya 2011-02-28 11:41:41

+0

不幸的是,我workign的規範和必須接受一個XmlDocument作爲參數 – gibb3h 2011-02-28 11:43:44

回答

1

「無」可能只是意味着它沒有開始迭代着呢,是BOF(對於一個更好的詞想要的)。它應該仍然有效。通常情況下,如果不是,則意味着名稱空間不正確 - 在源文件中仔細檢查xmlns

這工作得很好,例如:

public class Test 
{ 
    static void Main() 
    { 
     var doc = new XmlDocument(); 
     doc.LoadXml(@"<Test foo=""bar""></Test>"); 
     var ser = new XmlSerializer(typeof(Test)); 
     using (var reader = new XmlNodeReader(doc.DocumentElement)) 
     { 
      var test = (Test)ser.Deserialize(reader); 
      Console.WriteLine(test.Foo); 
     } 

    } 
    [XmlAttribute("foo")] 
    public string Foo { get; set; } 
} 
+0

燁,看起來像是一個命名空間問題,非常感謝! :d – gibb3h 2011-02-28 11:55:51