在类似C#的JavaScript中解析XML

本文关键字:XML JavaScript | 更新日期: 2023-09-27 17:58:55

我知道每个人都说在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>

在javasrpt中,我可以解析这个XML文件并将其分配给一个对象varobj

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

有没有C#库可以将XML解析成这样的东西,或者我必须用另一种方式来做?

在类似C#的JavaScript中解析XML

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

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

您可能还想看看visual studio安装中应该包含的一个工具:xsd.exe。具体来说,看看/classes开关。这不是你想要的,但它会产生类似的语法。

如果你想深入C#和ExpandoObject的动态方面,有一个非常聪明的库,由@aamaedsaint提供,看起来就像你想要的:

  • 介绍性博客文章:介绍使用.NET 4.0动态功能实现的ElasticObject-在CSharp中使用XML的更简单方法,ExpandoObject 的智能表亲

  • 源代码:CodePlex 上的ElasticObject

  • 代码项目文章:C#4.0动态冒险-10分钟中的ExpandoObject、ElasticObject和Twitter客户端

示例:

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();