我有一个xml文件。这个文件有我的日志文件路径(txt)。这个xml文件有一些模块,每个模块都有日志文件路径。所以我想读取xml并列出每个模块的详细信息然后我想读取txt文件(使用路径)。任何人都可以提出一些想法来做这些事情。
谢谢, 这是我的xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Modules>
<ServiceHost>
<LogType value="FatalErrorLog">
<Fields>
<FileName>ServiceWS.log</FileName>
<FileLocation>\\10.8.8.21\lv0\Logs\Prod\Service\</FileLocation>
<IsLogFilterAvailable value="true" />
<IsDateFilterAvailable value="true" />
<IsDownloadRawFile value="false" />
</Fields>
</LogType>
<LogType value="DebugLog">
<Fields>
<FileName>ServiceDebugWS.log</FileName>
<FileLocation>\\10.8.8.21\lv0\Logs\Prod\ServiceHost</FileLocation>
<IsLogFilterAvailable value="true" />
<IsDateFilterAvailable value="true" />
<IsDownloadRawFile value="false" />
</Fields>
</LogType>
</ServiceHost>
<Product value="Debug">
<LogType>
<Fields>
<FileName>Product.log</FileName>
<FileLocation>\\10.8.8.21\lv0\Logs\Prod\Endor\</FileLocation>
<IsLogFilterAvailable value="true" />
<IsDateFilterAvailable value="true" />
<IsDownloadRawFile value="false" />
</Fields>
</LogType>
</Product>
<Portal value="Debug">
<LogType>
<Fields>
<FileName>Portal.log</FileName>
<FileLocation>\\10.8.8.21\lv0\Logs\Prod\SupportPortal\</FileLocation>
<IsLogFilterAvailable value="true" />
<IsDateFilterAvailable value="true" />
<IsDownloadRawFile value="false" />
</Fields>
</LogType>
</Portal>
<Modules>
答案 0 :(得分:0)
这应该让你开始:
XmlDocument xml_Document = new XmlDocument();
xml_Document.Load("C:\\settings.xml");
var list = xml_Document.SelectNodes("//LogType [@value='Debug']");
var logLocation = list.Item(0).SelectNodes("//FileLocation").Item(0).Value;
答案 1 :(得分:0)
您可以使用REGEX查找xml文件中的任何内容。假设您想要在数组中获取txt文件名,那么您可以通过以下方式来实现......
// get the string start with <FileLocation> and end with </FileLocation>
MatchCollection v = Regex.Matches(input_string, "<FileLocation>(.)*</FileLocation>", RegexOptions.IgnoreCase);
string[] arr=new string[total_length];
int counter = 0;
foreach (Match i in v)
{
string s = i.Value;
s= s.Replace("<FileLocation>", "");
s=s.Replace("</FileLocation>","");
arr[counter] = s;
counter++;
}
您可以通过这种方式查找和提取任何字符串。
然后你可以使用arr数组打开txt文件或做任何你想做的事。
答案 2 :(得分:0)
你可以使用XmlDocument作为点 nunespascal 使用XPath,这更舒服(虽然与Xml相似)
XPathDocument xdoc = new XPathDocument(filename);
XPathNavigator xnav = xdoc.CreateNavigator();
// path in XML to file location
XPathNodeIterator xiter = xnav.Select("/Modules/ServiceHost/LogType/Fields/FileLocation");
foreach(var item in xiter)
{
Log(item.ToString());
}
P.S。在您的XML文件中没有关闭:)