2009-06-24 46 views
0
<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <MyData> 
    <MyField>SomeValueHere1</MyField> 
    <MyComplexData> 
     <MyComplexDataField1 property="1"></MyComplexDataField1> 
     <MyComplexDataField2 someproperty"value1"> value1 </MyComplexDataField1> 
    </MyComplexData> 
    </MyData> 
    <MyData> 
    <MyField>SomeValueHere11</MyField> 
    <MyComplexData> 
     <MyComplexDataField1 property="4"></MyComplexDataField1> 
     <MyComplexDataField2 someproperty="value1"> value2 </MyComplexDataField1> 
     </MyComplexData> 
    </MyData> 
    <MyData> 
    <MyField>SomeValueHere13</MyField> 
    <MyComplexData> 
     <MyComplexDataField1 property="5"></MyComplexDataField1> 
     <MyComplexDataField2 someproperty="value1"> value </MyComplexDataField1> 
    </MyComplexData> 
    </MyData> 
    . 
    . 
    . 
    . 
</root> 

我想获得MyData的对象的集合(假设MyData的对象可以序列化和反序列化到所提到的XMLNode)XML文件解释和操作

什么都是对System.Xml API(S )我应该看看? - .Net和C#

请指导我。

+0

谢谢..我在发布线程后努力格式化xml内容 – 123Developer 2009-06-24 18:10:22

回答

0

这是.NET 2.0的做事方式 - 使用System.Xml中的XmlDocument。

XmlDocument xdoc = new XmlDocument(); 

xdoc.Load('(your file name)'); 

XmlNodeList myDataList = xdoc.SelectNodes('//MyData'); 

foreach(XmlNode dataNode in myDataList) 
{ 
    // do whatever oyu need to do with your myData nodes 
} 

查看MSDN documentation on the XmlDocument类。这应该让你知道如何处理XML文档。

由于XML文档一次将整个文档加载到内存中,并允许您在文档中四处浏览并操作,因此XML文档方法适用于中小型文档(大小不超过几MB)。

使用.NET 3.5及更高版本,您可以使用XDocument获得新的“LINQ to XML”方法 - 请查看MSDN documentation on it here

马克

0

如果你想使用XML序列化,你可以声明这样的事情:

public class root 
{ 

    [XmlElement("MyData")] 
    public List<MyData> Items { get, set } 

} 

public class MyData 
{ 
    ... 
} 

要通过MyData的对象进行反序列化和循环,使用下面的代码:

XmlSerializer xs = new XmlSerializer(typeof(root)); 
root r; 
using (StreamReader reader = new StreamReader(filename)) 
{ 
    r = xs.Deserialize(reader) as root; 
} 

foreach(MyData d in r.Items) 
{ 
    ... 
}