2012-05-31 96 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文件沒有關閉:)