2013-07-02 53 views
0

我正在嘗試創建一個更新XML文件內容的工具。 我最大的問題是如何讓程序知道在哪裏更新什麼。更新XML文件中的特定內容

以下是XML文件前五行的示例。

<?xml version="1.0" encoding="UTF-8"?> 
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="280" manacost="0"> 
    <health now="8200" max="8200"/> 
    <look type="35" corpse="5995"/> 
    <targetchange interval="5000" chance="10"/> 

比方說,我想修改經驗的價值,我該如何去做呢? 我已經瀏覽過這個網站的已有說明,但沒有涉及到這樣的事情。

我正在使用C#Windows窗體。

+3

如果您對LINQ很熟悉,我會推薦使用LINQ-to-XML。如果你不熟悉LINQ,那麼熟悉LINQ! – sircodesalot

+0

如果您的_intent_是從XML讀取/加載「怪物」數據並構建等效對象,請在應用程序中使用該「怪物」,然後再寫入/保存該對象,也許您應該考慮使用[XmlSerializer](http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm)和簡單的POCO對象來表示數據。 –

+0

這些數據看起來像是你需要加載的東西 - 爲什麼不把它們全部加載到你使用的任何類中,改變你需要的東西並保存它們呢?比改變它的一部分會更容易。當然,除非你正在製作一些通用工具。 (編輯:看起來像我只是由另一個克里斯ninja'd) – Chris

回答

4

使用LINQ到XML,您可以:

XDocument xdoc = XDocument.Load(path_to_xml); // load xml file 
// query for data you want to update 
var experience = xdoc.Root.Attribute("experience"); 
experience.SetValue(42); // update data 
xdoc.Save(path_to_xml); // save updated data 
+0

我想我可以開始學習使用Linq,任何人都有一個堅實的指導,我可以使用? – Evan

+0

@ user1880591您可以從[LINQ To XML Tutorials with Examples](http://www.dotnetcurry.com/ShowArticle.aspx?ID=564)開始學習LINQPad,以瞭解LINQ –

0

有許多方法,你可以這樣做:

  1. 使用XMLDocument和淨等內置類。您可以打開文件並將XML加載到該類中,然後使用XPath轉到該屬性。這將和@ lazyberezovsky的答案類似。

  2. hack-y解決方案是對文件的文本進行字符串解析。查找experience="並注意從那個和下一個"是您想要更改的值。這不會是我的第一個建議,但是我有時在想要最快速的黑客更改XML文件時這樣做。