【问题标题】:How to read XML in C#?如何在 C# 中读取 XML?
【发布时间】:2012-07-24 01:26:59
【问题描述】:

我有一个如下所示的 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 但它显示了一些错误。

【问题讨论】:

  • 它显示什么错误,读入 XML 后你想对它做什么?
  • 你用什么代码读的?
  • 我可以看到两个 XML 错误:没有命名空间声明和 IN 不在 code 属性中的引号中。我的回答希望第二个得到修复,并且不管第一个如何工作。
  • 我只写了内部代码。一切都在那里。而且“”也在那里。当我在这里写的时候,我写错了。

标签: c# .net xml


【解决方案1】:

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

以下是一些首选:

Linq 到 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

【讨论】:

    【解决方案2】:

    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 包含您需要的一切。

    【讨论】:

    • 你的意思是 XDocument.Load 在这种情况下,对吧? (downvote 不是来自我)
    • 是的,它是一个文件,但为了展示一个示例,我使用了一个字符串。我已经更新以包含文件的样子。
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多