2013-03-19 93 views
-1

我需要爲我的服務使用XML來讀取一旦運行後可以更改的值,並且我只能找到有關當前XML設置存在問題的人的來源,來到它的初學者。在Windows服務中使用.xml c#

任何人都可以簡單地解釋如何在設計Windows服務時開始使用XML,或者指向一個初學者可以理解的良好源代碼的方向嗎?

謝謝

+1

什麼確切的是你面對試圖在Windows服務中使用XML時有困難嗎? – NoviceProgrammer 2013-03-19 17:40:39

+0

Xml對Windows Service沒有仇恨,對其他類型的項目沒有偏見。發佈你想要用Xml做什麼以及你面臨什麼確切的問題。 – publicgk 2013-03-19 17:44:33

+0

你有一個app.config的值進入? – 2013-03-19 17:58:54

回答

0

Xml與windows服務無關。

有幾種方法可以在c#中使用一個簡單的一個是XmlDocument類。

XmlDocument configDoc = new XmlDocument(); 
configDoc.Load("ServiceConfig.xml"); 
XmlNode pollingNode = configDoc.DocumentElement.SelectSingleNode("PollingInterval"); 
if (pollingNode != null) 
{ 
/// Grab pollingNode.InnerText, convert to an int and set Property... 
} 

以上假設XML是

<Config> 
<PollingInterval>30</PollingInterval> 
</Config> 

你這個大問題是你要去哪裏把文件,處理它被損壞,一些halfwit鎖定你出它,它被刪除...

我想這個想法之前,先想一想。

+0

我還會怎樣改變服務在運行時運行的方式? – user345453 2013-03-19 17:45:41

+0

@BenAshton是否有他們需要在運行時執行此操作的原因?許多應用程序要求您更改app.config文件,然後重新啓動服務以使更改生效。如果需要,有很多方法可以在運行時更改它。您可以提供一個GUI作爲單獨的可執行文件,通過WPF與服務進行通信。 – 2013-03-19 18:00:12

+0

@JohnKoerner似乎已經回答了這一問題。文件很簡單,甚至可以作爲原型的一個好的開始,但通過一個接口來實現它,然後你可以使用一些你不需要處理的東西,它被丟失/破壞或者恐怖的部分編輯。 – 2013-03-19 18:31:09

0

如果您願意,可以使用XML序列化。這是假定一個名爲Demo.xml在輸出目錄中的文件:

string filePath = ".\\Demo.xml"; 
private void Form1_Load(object sender, EventArgs e) 
{ 
    ReadSettings(); 
} 

void ReadSettings() 
{ 
    XmlSerializer s = new XmlSerializer(typeof(Settings)); 
    Settings newSettings = null; 
    using (StreamReader sr = new StreamReader(filePath)) 
    { 
     try 
     { 
      newSettings = (Settings)s.Deserialize(sr); 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine("Error:" + ex.ToString()); 
     } 
    } 
    if (newSettings != null) 
     this.Text = newSettings.WatchPath; 

} 

public class Settings 
{ 
    public string WatchPath { get; set; } 
} 

XML格式:

<?xml version="1.0" encoding="utf-8" ?> 
<Settings> 
    <WatchPath>C:\Temp</WatchPath> 
</Settings> 
+0

我明白了,我的意思是說我可以做更多的事情 - 例如,我可以更改xml中可變參數的值,我將如何做到這一點? – user345453 2013-03-19 18:51:40