【发布时间】:2014-10-17 05:21:31
【问题描述】:
我正在尝试从 catch 块调用方法,但方法内的 xmlnode 似乎不起作用。我得到一个空值。如果我从 try 块中调用相同的方法,它会起作用。
var doc = new XmlDocument();
try
{
doc.Load(f.FullPath);
// do some work
}
catch (Exception e)
{
if (e is XMLException)
{
checkXML(ref doc);
}
public void checkXML(ref XmlDocument doc)
{
XmlNode xn = doc.SelectSingleNode("/BroadcastMonitor/Current");
xn["name1"].InnerText = SecurityElement.Escape(xn["name1"].InnerText);
xn["name2"].InnerText = SecurityElement.Escape(xn["name2"].InnerText); ;
}
现在,当 catch 块调用方法“checkXML”时,我将 xn 设为 null。但是如果我从“try”块执行相同的操作只是为了检查,“xn”有一个值。 'doc' 也有一个值,无论何时调用 try 或从 catch 块调用。
为什么会这样?请帮我理解。
编辑
<BroadcastMonitor>
<updated>2014-10-17T07:56:30</updated>
<Name>TESTING</Name>
<Current>
<artistName>اصاله& نصرى</artistName>
<albumName>شخصيه عنيده</albumName>
<CategoryName>ARABIC & SONGS</CategoryName>
</Current>
</BroadcastMonitor>
谢谢。
【问题讨论】:
-
您是否尝试过调试您的程序并逐步检查您的代码以查看异常代码块中
doc变量的内容是什么? -
是的,我已经做到了,正如我的问题中提到的那样。 doc变量有值
-
您的代码在
doc.Load(...)或do some work是否失败(=引发异常)? -
尝试使用最小 XML 结构的代码。如果它仍然不起作用(所以问题可能不是 xml 不正确),请将 xml 代码也粘贴到您的问题中。
-
@pasty:好的,当它尝试加载并且存在转义实体或者它会给我一个 xmlException 的东西时发现问题,在这种情况下加载不完整并且元素丢失。感谢您的指点。+1。