简体   繁体   English

如何在C#中读取XML?

[英]How to read XML in C#?

I have an XML file which looks like this 我有一个看起来像这样的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>

How can I read this using C#. 我如何使用C#阅读此内容。 Please help me in this. 请帮助我。 which will be easiest way for reading it? 哪种阅读方式最简单? I tried to read it into a DataSet but its showing some error. 我试图将其读入数据集,但显示出一些错误。

There are several strategies to read an XML document, or parts thereof, using C#. 有几种使用C#读取XML文档或其部分的策略。 If you are more specific about what you want to do with the XML document, the community can provide you with more specific guidance. 如果您更想了解XML文档的用途,社区可以为您提供更具体的指导。

Here are some top choices: 以下是一些最佳选择:

Linq to XML Linq到XML

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

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

XDocument (part of the Linq to XML framework) XDocument(Linq to XML框架的一部分)

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

XmlDocument XmlDocument

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

XPath XPath

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

How about just LINQ to XML ? LINQ to XML怎么样?

Given this: 鉴于这种:

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>";

(Note I had to wrap IN in quotes as such "IN" ) (请注意,我必须将IN用引号引起来,例如"IN"

Declare some namespaces and read it 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);

If reading from a string as above: 如果从上面的字符串中读取:

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

If reading from a file instead: 如果改为从文件读取:

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

Then load: 然后加载:

var ele = XElement.Load( txtReader );

ele contains everything you need. ele包含您需要的一切。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM