我想從不同的機器讀取XML文件,其中一些文件可能具有其他人不具備的數據元素。目前,我正在使用Try-Catch塊來處理這些情況,但我想知道是否有更好的方法來做到這一點,有什麼想法?XML文件中缺少XML元素
XmlDataDocument xmlDatadoc = new XmlDataDocument();
xmlDatadoc.DataSet.ReadXml("MachineData.xml");
DataSet ds = new DataSet("AppData");
ds = xmlDatadoc.DataSet;
DataView dv = new DataView(ds.Tables[config.GlobalVars.Paths]);
foreach (DataRowView drv in dv)
{
try
{
cApp.TransferProtcol = drv["TransferProtocol"].ToString();
}
catch { }
try
{
cApp.RemoteServerPath = drv["RemoteServer"].ToString();
}
catch { }
}
好吧,我想通了,根據約翰·桑德斯後一種解決方案:
if(ds.Tables[0].Columns.Contains("TransferProtocol")
{
try
{
if (drv["TransferProtocol"].ToString().Length > 0)
{
cApp.TransferProtcol = drv["TransferProtocol"].ToString();
}
}
catch(Exception e)
{
Messagebox.Show(e.Message);
}
}
我同意了空的catch塊,但我掐滅出來用於測試目的。自從我編輯了我的帖子後,我的Try-Catch塊現在看起來如此。
謝謝,我想這是目的我最初的帖子,我正在尋找更有效地做到這一點的方法。你能解釋一下在訪問它們之前如何檢查元素嗎? –
@@ John - 我實際上正在檢查列的長度屬性:if(drv [「SuspressMessages」]。ToString()。Length> 0)。我應該檢查它是否爲空嗎? –
是的,檢查null更接近NULL的數據庫概念。此外,請記住該列可能不存在(在這種情況下,'[「columnName」]'將失敗),或者可能包含一個'null'值(在這種情況下'.ToString()'將失敗)。 –