如何在C#中读取XML?

时间:2012-05-07 04:45:47

标签: c# .net xml

我有一个XML文件,看起来像这样

<ss:demo>
<ss:Name>
    <ss:FirstName>First</ss:FirstName>
    <ss:SecondName>Second</ss:SecondName>
</ss:Name>
<ss:country code="IN">India</ss:country>
</ss:demo>

如何使用C#阅读本文。 请帮帮我。这将是最简单的阅读方式吗?我试图将它读入DataSet但它显示出一些错误。

2 个答案:

答案 0 :(得分:6)

使用C#读取XML文档或其中的一部分有几种策略。如果您更具体地了解要对XML文档执行的操作,社区可以为您提供更具体的指导。

以下是一些首选:

Linq to XML

http://msdn.microsoft.com/en-us/library/bb387098.aspx

http://msdn.microsoft.com/en-us/library/bb387065.aspx

XDocument(Linq to XML框架的一部分)

http://msdn.microsoft.com/en-us/library/bb387063.aspx

的XmlDocument

http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx

的XPath

http://msdn.microsoft.com/en-us/library/ms256471.aspx

答案 1 :(得分:3)

LINQ to XML怎么样?

鉴于此:

var xml = "<ss:demo>\r\n<ss:Name>\r\n    <ss:FirstName>First</ss:FirstName>\r\n    <ss:SecondName>" +
"Second</ss:SecondName>\r\n</ss:Name>\r\n<ss:country code=\"IN\">India</ss:country>\r\n</ss" +
":demo>";

(注意我必须在引号中包含IN "IN"

声明一些名称空间并将其读入:

var mngr = new XmlNamespaceManager( new NameTable() );
mngr.AddNamespace( "ss", "urn:ignore" ); // or proper URL
var parserContext = new XmlParserContext(null, mngr, null, XmlSpace.None, null);

如果从上面的字符串中读取:

var txtReader = new XmlTextReader( xml, XmlNodeType.Element, parserContext );

如果从文件中读取:

var txtReader = new XmlTextReader( new FileStream(filename, FileMode.Open), XmlNodeType.Element, parserContext );

然后加载:

var ele = XElement.Load( txtReader );

ele包含您需要的一切。