调用者函数可以关闭xml阅读器资源

时间:2010-12-14 07:38:07

标签: c# xml

我有以下功能,它采用url路径并获取读者。因为我无法关闭读者并将其归还。调用者可以关闭返回的读者对象。

public  XmlReader GetXMLContent(string Path)
        {
         XmlTextReader responseReader= new XmlTextReader(XmlUrlPath);                                                                                              
         return responseReader;
        }

 XmlTextReader myReader =  GetXMLContent("http://sample.xml");
 while() // loop through all the elements 
 {
 }

 myReader.close(); // close the reader

2 个答案:

答案 0 :(得分:2)

是的,绝对的。当方法返回时,调用者已经有效地取得了读者的所有权(在这种特殊情况下)。

不可否认,我会使用using声明代替:

using (XmlTextReader reader = GetXmlContent("http://sample.xml"))
{
    ...
}

...使用您当前提出的代码,如果抛出异常,您将不会关闭阅读器。

答案 1 :(得分:2)

您不应该使用XmlTextReader构造函数。您应该使用XmlReader中的facrory方法。 As described in the docs

  

在.NET Framework 2.0版中   发布,建议的做法是   使用创建XmlReader实例   XmlReader.Create方法。这个   让您充分利用   这里介绍的新功能   释放。

除非您的方法针对此帖子进行了简化,否则这也会使您的方法过时。

using (XmlReader r = XmlReader.Create("http://sample.xml"))
{
   // read
}

如果您需要这种方法,您可以这样做:

public XmlReader GetXMLContent(string path)
{
    XmlReader responseReader = XmlReader.Create(path);   
    // do something special
    return responseReader;
}

using(XmlReader r = this.GetXMLContent("http://sample.xml"))
{
    // read
}