2016-04-13 28 views
-2

我在txt文件中有一個像這樣的字符串{ {Name Mike} {age 19} {gender male}}。 我想這將被轉換爲xml作爲下面的輸出。由於我對此很陌生,對我來說這似乎相當令人懷疑。從txt文件讀取字符串並將其轉換爲使用c的xml中的元素#

<name>Mike</name> 
<age>19</age> 
<gender>male</male> 

任何幫助,將不勝感激。

+3

這不是任何普通的標記自動創建文件,但它是有點接近JSON

。你必須自己解析它並建立你的xml文檔。 – Jonesopolis

+0

你可以使用這樣的東西「http://stackoverflow.com/questions/7771500/converting-array-of-objects-to-xml-in-c-sharp」 – Firoz

+0

謝謝。但我希望「名字」成爲屬性,「邁克」應該是它的價值。 – stackdoubt

回答

0

這裏是我的解決方案,首先你在begening在我的情況下創建一個XML文件,我在我的bin文件夾中創建x.xml,必須建立在XML文件中的root elemnt,在我的情況示例XML如下,root元素名稱可以是任何東西,我剛纔那麼使用root

<root> 
</root> 

代碼書面方式你串如下

  string s = "{{Name Mike} {age 19} {gender male}}"; 
      string[] s2 = s.Replace("{", "").Replace("}", "").Split(' '); 
      for (int i = 0; i < s2.Length; i++) 
      { 

       XDocument doc = XDocument.Load("x.xml"); 
       XElement rt = doc.Element("root"); 
       XElement elm = rt.Element(s2[i]); 

       if (elm != null) 
       { 
        elm.SetValue(s2[i + 1]); 
       } 
       else 
       { 
        XElement x = new XElement(s2[i], s2[i + 1]); 
        rt.Add(x); 
       } 

       doc.Save("x.xml"); 
       i++; 
      } 

希望這將解決您的問題

更新,如果你想在不手工創建的XML文件,那麼你可以做這樣

  string s = "{{Name Mike} {age 19} {gender male}}"; 
      string[] s2 = s.Replace("{", "").Replace("}", "").Split(' '); 

      if (!File.Exists("x.xml")) 
      { 
       TextWriter tw = new StreamWriter("x.xml", true); 
       tw.WriteLine("<root>\n</root>"); 
       tw.Close(); 
      } 

      for (int i = 0; i < s2.Length; i++) 
      { 

       XDocument doc = XDocument.Load("x.xml"); 
       XElement rt = doc.Element("root"); 
       XElement elm = rt.Element(s2[i]); 

       if (elm != null) 
       { 
        elm.SetValue(s2[i + 1]); 
       } 
       else 
       { 
        XElement x = new XElement(s2[i], s2[i + 1]); 
        rt.Add(x); 
       } 

       doc.Save("x.xml"); 
       i++; 
      } 
+0

而不是手動創建一個XML文件,有沒有辦法可以自動化,因爲這需要創建爲安裝程序文件。 – stackdoubt

+0

請參閱我的答案更新,如果不存在xml文件將自動創建 – Mostafiz

+0

其實我正在做這樣的字符串s = @「E:\ Newfolder \ sample.txt」;但它在XElement elm = rt.Element(s2 [i])上遇到異常; 「':'字符,十六進制值0x3A,不能包含在名稱中。」 – stackdoubt

相關問題