Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用类似C#的JavaScript解析XML_C#_Xml_Json_Parsing - Fatal编程技术网

用类似C#的JavaScript解析XML

用类似C#的JavaScript解析XML,c#,xml,json,parsing,C#,Xml,Json,Parsing,我知道大家都说在C#中解析XML的最佳方法是使用XmlDocument类并执行以下操作: XmlNodeList list = xmlDoc.getElementsByTagName('tag'); obj.item[0].title ( 'Title' ) obj.item[0].desc.meta ('MetaData') 但是,我喜欢JavaScript封装其XML和JSON的方式,其中XML或JSON文档中的每一级封装都可以使用“.”访问,即: test.xml <item&g

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

XmlNodeList list = xmlDoc.getElementsByTagName('tag');
obj.item[0].title ( 'Title' )
obj.item[0].desc.meta ('MetaData')
但是,我喜欢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>

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

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


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

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

  • 介绍性博客文章:

  • 源代码:

  • 代码项目文章:

例如:

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

没有这样的库,因为C#是编译的,JS是解释的。您可以创建类,如果XML是静态的,您可以将其反序列化到这些类中。有一个工具可以从XML生成这样的类。或者您可以使用XDocument—比自定义类更详细一点,但比XmlDocument更好—我知道“每个人”都不说使用XmlDocument。我个人认为使用
XDocument
和LINQ到XML。这看起来非常接近。谢谢,我会试试的