【问题标题】:Parsing XML in C# like JavaScript像 JavaScript 一样在 C# 中解析 XML
【发布时间】:2013-02-13 18:31:45
【问题描述】:

我知道每个人都说在 C# 中解析 XML 的最佳方法是使用 XmlDocument 类并执行以下操作:

XmlNodeList list = xmlDoc.getElementsByTagName('tag');

但是,我喜欢 JavaScript 封装其 XML 和 JSON 的方式,其中 XML 或 JSON 文档中的每一级封装都可以使用“.”来访问。即:

test.xml

<item>
 <title>Title</title>
 <desc>
    <meta>MetaData</meta>
    <content>Ipsum Lorem</content>
 </desc>
 <date>1/1/2013</date>
</item>

在 javasript 中,我可以解析这个 XML 文件并将其分配给一个对象 var obj。然后我可以做类似的事情:

obj.item[0].title ( 'Title' )
obj.item[0].desc.meta ('MetaData')

是否有任何 C# 库可以将 XML 解析为类似的内容,还是我必须以其他方式进行?

【问题讨论】:

  • 没有这样的库,因为C#是编译的,JS是解释的。如果 XML 是静态的,您可以创建可以反序列化 XML 的类。有一个工具可以从 XML 生成这样的类。或者您可以使用 XDocument - 比自定义类更详细但比 XmlDocument 更好
  • 我知道“每个人”都没有说使用 XmlDocument。我个人说使用XDocument 和 LINQ to XML。

标签: c# xml json parsing


【解决方案1】:

不完全相同,但是这种方法(将 XML 读入动态对象)在精神上是相似的:

http://www.codeproject.com/Articles/436406/Power-of-Dynamic-Reading-XML-and-CSV-files-made-ea

【讨论】:

  • 这看起来非常接近。谢谢,我试试看
【解决方案2】:

您可能还想看看应该包含在您的 Visual Studio 安装中的工具:xsd.exe。具体看一下 /classes 开关。这不是您要查找的内容,但会产生类似的语法。

【讨论】:

    【解决方案3】:

    如果您想涉足 C# 和 ExpandoObject 的动态方面,@amazedsaint 提供了一个非常聪明的库,看起来就像您所追求的那样:

    例子:

    dynamic item = new ElasticObject("item");
    item.Title = "Title";
    item.Desc = new { Meta = "Metadata", Content="Lorem Ipsum" };
    XElement asXml = item > FormatType.Xml;
    
    // and from xml:
    dynamic itemFromXml = asXml.ToElastic();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多