在类似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解析成这样的东西,或者我必须用另一种方式来做?
不完全相同,但这种方法(将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();