2009-08-17 15 views
0

名前と値のペアの形式でデータをまとめたものをXMLでどのように構築できますか?名前の値のペアをxmlに変換する

例:

タイトル:ミスター

名:ジョン

姓:Doeの

として有効なXML sililarへ:

あなたが使用していると仮定すると、
<Data> 
<Title>Mr</Title> 
<Name >John</Name > 
<Surname >Doe</Surname > 
</Data> 
+1

あなたが見たい変換の例を与えています。実際にコードを書く方法を尋ねていますか?これまでに何を試しましたか? –

+2

新しいxmlユーザーの最大の落とし穴は、あなたが見たいと思うようにxmlを突き詰めようとしていることです。私のアドバイス:それが動作する限り、それは動作しますが、動作させる。それが見えるべきであると思う方法を「見る」ようにするのを止めなさい。その何も無駄な時間。 – Will

+0

@Will:ACK。たいていの場合、シリアライズされたXML *が気になるのは、XMLがテキストであり、テキストツール(正規表現のような)で扱うことができないという深い誤解を意味します。間違いを犯すと、出力XMLがどのようにレンダリングされるかを気にし始めます。 – Tomalak

答えて

0

あなたは

var data=nameValuePair.Value; 
var xelement=new XElement("Data", 
         new XElement("Title",data.Title), 
         new XElement("Name",data.Name), 
         new XElement("Surname",data.Surname)); 

System.Linq.Xml

でのXElementを使用すると、あなたが質問この回答をないことができますか?

+0

私は.net 2.0を使用しています – raklos

+1

それは恥ずかしがり、XMLへのLinqは3.5にアップグレードする価値があります。 –

0

何をしても、XML対応のAPIを使用してください。単に文字列を読んでタグ間に書き込むだけではいけません。それは便利なので魅力的ですが、XMLを適切に生成するために文字とエンティティのエンコーディングについて心配する必要があります。

2

クラスを作成し、すべてのデータが言った形&に常にある場合は、それの束を持って

XElement xe = new XElement("Data", from kvp in dict 
          select new XElement(kvp.Key, kvp.Value)); 
0

..あなたは、キー値のようなpairs..somethingと辞書を持っていると仮定すると メンバーは&でXMLにシリアル化します。この構文で

public class test 
    { 
    public string title; 
    public string name; 
    public string surname; 
    } 

    void main() 
    { 
    List<test> t = new List<test>(); 

    test t1 = new test(); 
    t1.title = "Mr."; 
    t1.name = "John"; 
    t1.surname = "Doe"; 
    . 
    . 
    . 
    test tn = new test(); 
    t.Add(t1); 
    t.Add(t2); 
    . 
    . 
    . 
    . 
    t.Add(tn); 


    //Serialize to xml. 
    try 
    { 
        using (FileStream fs = new FileStream(szFileName, FileMode.Create)) 
        { 
         XmlSerializer xs = new XmlSerializer(typeof(List<test>)); 
         xs.Serialize(fs, t); 
        } 

    } 
    catch(Exception Ex) 
    { 
    Messagebox.Show(Ex.ToString()); 
    } 


    //And deserialize the data from xml to objects 
try 
{ 
         using (System.IO.FileStream fs = new FileStream(szDataFile,FileMode.Open)) 
         { 
         System.Xml.Serialization.XmlSerializer xs = new XmlSerializer(typeof(List<test>)); 
         List<test> t1 = new List<test>(); 
         t1 = xs.Deserialize(fs) as List<test>; 
         } 
} 
catch(Exception Ex) 
{ 
    Messagebox.Show(Ex.ToString()); 
} 

} 
0

使用Gelatin

define nl /[\r\n]/ 
define ws /\s+/ 
define fieldname /\w+/ 
define value /[^\r\n,]/ 

grammar input: 
    match nl: 
     do.skip() 
    match fieldname ':' ws value nl: 
     out.add('$0', '$3') 
関連する問題