2016-04-13 10 views
-2

このような文字列は、txtファイルにあります。{ {Name Mike} {age 19} {gender male}} これを以下の出力としてxmlに変換したいと思います。私はこれに新しいので、それは私にとってかなり疑わしいようです。文字列をtxtファイルから読み込み、c#を使用してxmlの要素に変換する#

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

助けていただければ幸いです。

+3

を行うことができます手でxmlファイルを作成せずにファイルの作成を自動化する場合。あなたはそれを自分で解析し、XML文書を構築する必要があります。 – Jonesopolis

+0

「http://stackoverflow.com/questions/7771500/converting-array-of-objects-to-xml-in-c-sharp」のようなものを使用できます。 – Firoz

+0

ありがとうございます。しかし、私は "名前"が属性になり、 "マイク"がそれの価値でなければなりません。 – stackdoubt

答えて

0

私の解決策は、私のケースではxmlファイルを作成する必要があります。x.xmlを私のbinフォルダに作成し、xmlファイルにroot elemntを作成する必要があります。 、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++; 
      } 

希望以下のようにあなたの文字列を足すためだけroot

<root> 
</root> 

、コードを使用している

更新

それはJSONにやや近いですが、あなたが、あなたはどんな共通のマークアップではありません、このよう

  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])の例外をヒットします。 "':'文字は16進値0x3Aを名前に含めることはできません。 – stackdoubt

関連する問題