2011-12-16 57 views
1
<A xmlns="http://www.aaa.com/bbb/" 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">  
<B> 
    <aa>AUH</aa><bb>5</bb><cc>Abu</cc> 
</B> 
<B> 
    <aa>AUH</aa><bb>7</bb><cc>ghi</cc> 
</B> 
    <ServiceResponse><ErrorMessage i:nil="true"/><ExecutionStatus>SUCCESS</ExecutionStatus></ServiceResponse> 
</A> 

我有一個類似於上面的XML,並且爲A,B和ServiceResponse創建了類。在Windows Phone 7中解析XML

,我試圖使用下面的代碼來解析:

XmlSerializer ser = new XmlSerializer(typeof(A)); 
objAirportListResponse = ser.Deserialize(new StringReader(str)) as A; 

在上面的代碼中「STR」是其含有以上XML字符串。

我越來越感到錯誤象下面這樣:

有XML文檔中的誤差(1,2)(System.InvalidOperationException)

如果刪除了的xmlns =「HTTP:// www.aaa.com/bbb/「xmlns:i =」http://www.w3.org/2001/XMLSchema-instance「從XML我得到了相同的錯誤在 由於i:nil =」true「 。然後我刪除了xmlns =「http://www.aaa.com/bbb/」xmlns:i =「http://www.w3.org/2001/XMLSchema-instance」和i:nil =「true」我試過解析XML,這次它成功解析到類中。

但刪除xmlns =「http://www.aaa.com/bbb/」xmlns:i =「http://www.w3.org/2001/XMLSchema-instance」和i:nil =「true 「是不是一個正確的方式,請幫助我如何解析上面的例子。

在此先感謝。

+0

而* *是什麼例外? `InvalidOperationException.Message`和`InvalidOperationException.InnerException`可能會告訴你到底發生了什麼問題。 – Will 2011-12-16 14:35:28

回答

0

我會同意上述關於Linq到XML的方法是比較可靠的意見,但這種聯繫可能會爲你工作:

Use multiple namespaces when deserializing with .NET XmlSerializer

你必須屬性你在使用Xml屬性進行反序列化以獲取數據讀入之前,我建議以另一種方式工作一段時間 - 嘗試將您的類序列化爲XML,一遍又一遍地進行調整,直到獲得完整的輸出結果讀入,然後嘗試讀取「真實」數據。