Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# XMLTextReader使用什么解析方法?_C#_Xml - Fatal编程技术网

C# XMLTextReader使用什么解析方法?

C# XMLTextReader使用什么解析方法?,c#,xml,C#,Xml,XMLTextReader使用什么解析方法?我很困惑。Sax还是Dom?两者都不是,真的-这是一个问题。它既不在内存中构建完整的对象模型(DOM),也不解析整个文档,从而引发客户端可以响应的事件(SAX) 相反,客户端控制解析,要求解析器多读一点,然后检查其状态并作出相应反应,然后要求它多读一点等等。DOM解析器读取整个XML文档,并将其表示为内存中对象的层次结构 SAX解析器一次读取一个XML标记。您提供了回调方法,当解析器在文档中遇到某些类型的内容时,应该调用这些方法 XMLTextRead

XMLTextReader使用什么解析方法?我很困惑。Sax还是Dom?

两者都不是,真的-这是一个问题。它既不在内存中构建完整的对象模型(DOM),也不解析整个文档,从而引发客户端可以响应的事件(SAX)


相反,客户端控制解析,要求解析器多读一点,然后检查其状态并作出相应反应,然后要求它多读一点等等。

DOM解析器读取整个XML文档,并将其表示为内存中对象的层次结构

SAX解析器一次读取一个XML标记。您提供了回调方法,当解析器在文档中遇到某些类型的内容时,应该调用这些方法


XMLTextReader一次读取一个XML标记,因此它更接近SAX,但它不提供回调。

首先,SAX是一个纯Java的解析器api。与语言无关的术语是推式解析,XmlTextReader不使用这种技术

DOM是W3C标准,.NET实现了DOM级别1和2。但是,该功能是在XmlDocument类中实现的,该类可以使用XmlTextReader加载文档


XmlTextReader使用拉式解析(与之相当的Java是StAX)解析XML,这基本上是SAX/推式解析的反向。读取新实体时,您不会收到通知,而是在准备就绪时请求文档中的下一个实体(顺便说一句,可以在pull解析器之上实现SAX样式的解析器,但不能反过来实现)。

我重新标记时没有使用java标记,因为我相信这是C#onlyTrue,但是XmlTextReader也支持DOM。以什么方式?您可以很容易地用XmlTextReader构建DOM解析器,但是您不能要求XmlTextReader本身以DOM树的形式读取完整的文档。出于某种原因,我认为XmlTextReader中有这个功能。它实际上在XmlDocument中。