如何读取XML文件并写入列表,然后获取TXT文件的路径并读取它

本文关键字:读取 文件 然后 获取 TXT 路径 列表 何读取 XML | 更新日期: 2023-09-27 18:35:56

我有一个xml文件,它有我的日志文件(txt)的路径。这个 xml 文件有一些模块,每个模块都有日志文件 path.so 我想读取 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>

如何读取XML文件并写入列表,然后获取TXT文件的路径并读取它

这应该让你开始:

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;

您可以使用 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文件或执行任何操作。

你可以使用

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 文件中未关闭:)