在读取iPCU 3.6生成的文件中的doctype元素时,XmlTextReader会挂起

时间:2012-10-04 17:43:18

标签: c# xml xmltextreader

您好我使用XmlTextReader读取iPhone配置实用程序3.6生成的策略文件 当读者到达doctype元素时,它会挂起大约15-20秒。这对我来说是个大问题,因为我需要一次读取60个文件,并且每次读取文件3次。以下是我的一些代码和一个可用于重复此问题的示例文件。

private int findStart(String d)
    {
        Boolean StartLooking = false;
        using (XmlTextReader xr = new XmlTextReader(d))
        {
            while (xr.Read())
            {
                if (xr.NodeType.Equals(XmlNodeType.Element) && xr.Name.Equals("dict") && !StartLooking)
                    StartLooking = true;
                else if (xr.NodeType.Equals(XmlNodeType.Element) && xr.Name.Equals("dict") && StartLooking)
                    return xr.LineNumber;
            }
            xr.Close();
        }
        return -1;
    }

XML文件: AdvancedPayload.mobileconfig (Dropboxlink)

如果你知道为什么会发生这种挂断,请回复。感谢

2 个答案:

答案 0 :(得分:0)

DOCTYPE是什么样的?在我看来,doctype有一个外部DTD的引用,你的应用程序实际上是从网上下载外部DTD。可以吗? Xml(或你)是否需要DTD?如果你不需要,你可以关闭DTD处理。

答案 1 :(得分:0)

使用XmlTextReader.DtdProcessing=DtdProcessing.Ignore;