2012-05-31 65 views
-1

我有有我的日志文件(TXT)的路径有一些模块,每个。这XML文件的XML文件。此具有日志文件path.so我想读XML并列出每个模块的细节的话,我想读txt文件(使用路径)。可有人请给一些想法做这个东西。如何读取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> 
+1

[你有什么试过?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Damith

+0

我可以读取XML和列出它,从路径中获取txt文件。 – Ash

+0

'字符串READTEXT = File.ReadAllText(路径);' – Damith

回答

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; 
+0

谢谢,它真的帮了lot.i有一样,如果该文件是在另一台服务器一个问题吗? – Ash

+0

负载的功能是非常方便的。它也可以从URL加载。这里指:http://msdn.microsoft.com/en-us/library/875kz807.aspx – nunespascal

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文件,或者你什么都想要。

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文件没有关闭:)