-1

この形式の xml を作成したい

<root>
 <columns>
  <column name="name1" value="value1" />
  <column name="name2" value="value2" />
  <column name="name3" value="value3" />
  ...
 </columns>
 <rows>
  <row name="name1" value="value1" />
  <row name="name2" value="value2" />
  <row name="name3" value="value3" />
  ...
 </rows>
</root>

だから私は作成します

XElement tree = new XElement("root", new XElement("columns", from c in  columns select new XElement("column", c) ...

そして結果は

<root>
 <columns>
  <column>
   <column>
    <column> 
     ...
    </column>
   </column>
  </columns>
 ...
</root>

ノードの子または何かを閉じて、必要なものを取得するにはどうすればよいですか??

4

2 に答える 2

2

次のコード:

List<KeyValuePair<string, string>> columns = new Dictionary<string,string> {
   {"name1", "value1"},
   {"name2", "value2"},
   {"name3", "value3"}
}.ToList();

XElement tree =
    new XElement("root",
        new XElement("columns",
            from c in columns
            select new XElement("column",
                new XAttribute("name", c.Key),
                new XAttribute("value", c.Value)
            )
        ),
        new XElement("rows",
             from r in rows // same dictionary as columns 
             select new XElement("row",
                 new XAttribute("name", r.Key),
                 new XAttribute("value", r.Value)
            )
        )
    );

必要な xml を生成します。

<root>
  <columns>
    <column name="name1" value="value1" />
    <column name="name2" value="value2" />
    <column name="name3" value="value3" />
  </columns>
  <rows>
    <row name="name1" value="value1" />
    <row name="name2" value="value2" />
    <row name="name3" value="value3" />
  </rows>
</root>
于 2013-03-08T11:18:31.583 に答える
0
XElement tree = new XElement("root",
    new XElement("columns",
        from c in columns
        select new XElement("column", new XAttribute("name", c.Name,), new XAttribute("value", c.Value))),
    new XElement("rows",
        from r in rows
        select new XElement("row", new XAttribute("name", r.Name,), new XAttribute("value", r.Value))));
于 2013-03-08T11:19:32.473 に答える