0
爲了儘量減少讀取錯誤日誌所用的時間,我創建了以下小插件,它將解析Elmah錯誤日誌中包含的相關信息,並最終生成Excel電子表格。目前我正在使用WriteLine進行測試。我面臨的問題是,在第二個foreach
循環內,我在每個node.attribute項目中都看到一個空引用異常。此代碼的預期結果是從每個XML文檔的<error>
標記中生成一個「屬性」值列表。使用控制檯應用程序解析Elmah錯誤日誌
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Xml;
namespace ExcelSortingAutomation
{
public class Program
{
public static void Main(string[] args)
{
DirectoryInfo Exceptions = new DirectoryInfo("C:\\ErrorsMay2017");
FileInfo[] ExceptionFiles = Exceptions.GetFiles("*.xml");
foreach (var exception in ExceptionFiles)
{
string xml = "<error></error>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
foreach (XmlNode node in doc.SelectNodes("//error"))
{
string errorId = node.Attributes["errorId"].Value;
string type = node.Attributes["type"].Value;
string message = node.Attributes["message"].Value;
string time = node.Attributes["time"].Value;
Console.WriteLine("{0} - {1} - {2} = {3}", errorId, type, message, time);
}
}
}
}
}
我的問題是,爲什麼日誌,這應該由這點拉出並解析,不接受屬性值?
編輯1:經仔細檢查,XmlNode的節點值被返回沒有 「HasAttributes」
線'串XML被替換= 「 」;'應替換爲'string xml = File.ReadAllText(exception.FullName));' –
@JamesCurran這很好。請允許我請您將其設置爲答案,以便我可以接受它? – jpears
我期待着你說「這條線只是爲了這個例子,我用真實的代碼閱讀了這個文件」。然後我會說「然後用文件中的一些實際片段替換 」 –