2010-05-03 42 views
3

嗨我正在Silverlight 3.0中開發一個應用程序,我想在其中創建一個通用的XML解析器,就像每次調用webservice時一樣我正在接受不同的XML,我想使它成爲通用的這樣我才能在C#的本機數據結構中收到XML?請幫助我? 像我得到這樣的XML一次Silverlight 3.0中的通用XML解析器

<test> 
<node1></node1> 
<node2></node2> 
</test> 

和其他時間

<mytest> 
<application name="XYZ">My Application</application> 
<application name="ABC">My Application</application> 
</mytest> 

我想一般的解析器,例如它使得整個XML的一些樹結構

+0

簡單的解決方案:爲什麼你不能只接收一個字符串客戶端並將其讀入XmlTextReader或XmlDocument? – slugster 2010-05-03 11:14:54

+0

如何使用XMLReader做到這一點?我找到了一些示例,但都是針對某種特定類型的XML – 2010-05-03 22:33:05

回答

1

您可以使用.NET xml serialization

由於看起來像這樣

<TestObject> 
    <FirstProperty>SomeValue</FirstProperty> 
    <SecondProperty>17</SecondProperty> 
</TestObject> 

C#對象

[Serializable] 
public class TestObject 
{ 
    public string FirstProperty { get; set; } 
    public int SecondProperty { get; set; } 
} 

在這裏,XML是代碼的XML轉換爲對象

string xml = @"<TestObject> 
        <FirstProperty>SomeValue</FirstProperty> 
        <SecondProperty>17</SecondProperty> 
       </TestObject>"; 

XmlSerializer serializer = new XmlSerializer(typeof(TestObject)); 

using (StringReader reader = new StringReader(xml)) 
{ 
    using (XmlTextReader xmlReader = new XmlTextReader(reader)) 
    { 
     TestObject obj = serializer.Deserialize(xmlReader) as TestObject; 
    } 
} 
+0

只是爲了防止誤解:您不需要使用Serialize屬性來使用XmlSerializer。對這種序列化沒有影響。 – 2010-05-03 12:42:34

+0

但是對於這種類型的解析器,我需要爲每個XML創建Serializeable對象,例如,如果我有100種類型的XML,那麼我需要100個對象...這對我來說是不可行的。我只想將它們存儲在通用結構中,例如List或Dictionary。 – 2010-05-03 22:31:44