我有一个Xmlreader,我想加载到'里面的XMLDocument中使用': 但是,问题是XMLDocument一旦完成就会被释放(在xml.Load(reader)之后)。 我试过在'中使用'包含一个int变量。它也被处理掉了。 但是,在第一次使用'在哪里我创造了'结果'字符串,离开声明后不会被处理掉。 为什么会这样?
HttpWebRequest req = WebRequest.Create(URL_GET.ToString()) as HttpWebRequest;
string result = null;
using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
result = reader.ReadToEnd();
}
using (XmlReader reader = XmlReader.Create(new StringReader(result)))
{
reader.ReadToFollowing("ops:output");
XmlDocument xml = new XmlDocument();
xml.Load(reader);
}
答案 0 :(得分:7)
xml
没有被处置;它只是超出范围,因此变量不再可访问 - 但是,它所引用的对象没有发生任何变化。只需在xml
范围之外声明using
:
XmlDocument xml;
using (XmlReader reader = XmlReader.Create(new StringReader(result)))
{
reader.ReadToFollowing("ops:output");
xml = new XmlDocument();
xml.Load(reader);
}
// Now, xml exists here