2012-11-28 59 views
1

的代碼執行沒有任何錯誤,但{0}和{1}不受的String.format沒有效果

FileStream fs = new FileStream(xmlFile.FullName, FileMode.Open, FileAccess.Read); 
XmlDocument doc = new XmlDocument(); 
doc.Load(fs); 

string docStrXml = doc.InnerXml.ToString(); 
String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString()); 

triggerDocument.LoadXml(docStrXml); 
triggerDocument.Save(directoryPathOfNewXml + "\\" + xmlFile.Name); 

新的文件被保存在的String.Format聲明的值替換沒有問題。基本上,我打開一個XML文件,並且我想在文檔中插入字符串。這裏是初始文檔(也是最後,因爲它不會改變):

<?xml version="1.0" encoding="utf-8" ?> 
<Package 
    source="http://localhost/Service/Master/{0}/{1}/" 
    triggerseturl="http://localhost/Service/Master/{0}/{1}/client.xml"> 
    <File name="client_full.xml"/> 
    <File name="client_half.xml"/> 
</Package> 
+3

字符串是不可變的。 – SLaks

+3

請不要使用string.Format或string.Concat創建XML文件...有許多方法可以使用XML API創建XML。將很多您和其他人的時間從「爲什麼#$#%#XML不理解我」>「字符」 –

+0

多個問題提出任何建議? – guiomie

回答

3

字符串是不可變的,你必須將string.Format的返回值賦值給另一個變量。

它將具有插入值的新字符串。

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString()); 
3

你忘了用新的值來代替docStrXml值:

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString()); 
1

String.Format方法返回基於傳遞[docStrXml]字符串參數的字符串,但不直接在其上進行操作。您需要將返回值分配給一個變量,在這種情況下,您將該變量傳遞給該方法。修改你的代碼到這個:

docStrXml = String.Format(docStrXml, newVersion.ToString(), oldVersion.ToString()); 

你應該很好去。