从XML创建实体

时间:2011-05-09 15:13:17

标签: c# deserialization

我有以下XML结构

<T>
 <F>
  <H>
   <H1>some value</H1>
   <H2>some value</H2>
   <H3>some value</H3>
  </H>
  <O>
   <P>some value</P>
   <TI>some value</TI>
   <TI>some value</TI>
  </O>
  <R>
   <PTY>some value</PTY>
   <PTY>some value</PTY>
   <PTY>some value</PTY>
  </R>
 </F>
<T>  

我需要在C#中解析这个xml并从中获取值以进一步导出到CSV文件。 我的问题是你如何为这个XML创建一个实体

3 个答案:

答案 0 :(得分:1)

您可以使用LinqToXml来解析xml。 StringBuilder将有助于生成CSV。

我认为这些How Tos会很有用。它们描述了解析这个xml所需的全部内容。

答案 1 :(得分:1)

您可以使用XmlSerializer及其related attributes

只要XML不太复杂,就没有太多工作要做。

阅读XML:

var serializer = new XmlSerializer(typeof(SerializableObject));

SerializableObject deserialized;

using (var stream = new FileStream(@"C:\test.xml", FileMode.Open))
{ 
    deserialized = (SerializableObject)serializer.Deserialize(stream);
}

SerializableObject将如下所示:

[Serializable]
[XmlRootAttribute("T")]
public class SerializableObject
{
    ...
}

懒惰程序员的奖励:您可以使用Xsd.exe来强制从XML文件创建对象。然后根据您的需要调整结果。

答案 2 :(得分:0)

使用System.Xml.Linq添加; 然后你可以做类似的事情:

XDocument xml = XDocument.Load(@“.... \ People.xml”); var query = from x in xml.Elements(“people”)。Elements(“person”) where(int)p.Element(“id”)== 1 选择p;