-1

我有一个 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>
4

3 回答 3

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());
        }

您的 XML 文件中的 PS 未关闭 :)

于 2012-05-31T11:00:37.287 回答
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 文件或做任何你想做的事情。

于 2012-05-31T10:53:08.723 回答
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;
于 2012-05-31T10:39:49.383 回答