快速检测Xml命名空间

时间:2010-05-17 01:55:15

标签: c# xml regex xmldocument xml-namespaces

这可能是我试图解决的一个非常微不足道的问题,但我确信有更好的方法。所以请放轻松我。

我有一堆XSD文件是我们应用程序的内部文件,我们有大约20-30个Xml文件,它们基于这些XSD实现数据集。一些Xml文件很小(<100Kb),其他的大约3-4Mb,少数文件超过10Mb。

我需要找到一种方法来计算这些Xml文件的命名空间,以便提供(如类似)基于XSD的intellisense。这个实现不是问题 - 另一个开发人员为此编写了代码。

但我不确定检测命名空间的最佳(也是最快!)方法是不使用XmlDocument(完整解析)。

我正在使用C#3.5,文档以Stream形式出现(有些是远程文件)。所有文件都是* .xml(我可以检测它是否基于扩展)但不幸的是Xml命名空间是唯一的方法。

现在我已经尝试过XmlDocument,但是我发现它的效率和速度都很慢,因为较大的文档正在等待解析(即使是100Kb的文档)。

public string GetNamespaceForDocument(Stream document);

以上是我的方法签名 - 重载包括“内容”的字符串。 RegEx(编译)模式会不会很好?

Visual Studio如何有效地管理它?另一所大学告诉我在C / C ++中找到一个快速的Xml解析器,解析内容并有一个存根,它将命名空间作为.NET中较慢的命名空间,这是一个好主意吗?

1 个答案:

答案 0 :(得分:2)

您可以使用XmlReader使用“pull”方法来读取XML(类似于SAX的“推送”方法,但更容易编写代码)。重要的是,在将内容返回给您之前,它不会等待读取整个文件。