2013-03-08 47 views
-1

在C#中添加的XElement XML元素/節點裏面我想創建一些XML這種格式使用LINQ

<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> 

我如何關閉一個節點的孩子或東西有我想要的?

+2

請提供完整的代碼。 – 2013-03-08 11:13:53

+0

我編輯請檢查。我認爲這是崩潰 – Shrivallabh 2013-03-08 11:23:24

+0

@Shrivallabh,你鍵入「colapse」,我改進了,但是,事實證明**意圖**動詞是「關閉」。 – Jodrell 2013-03-08 11:25:59

回答

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> 
+0

這使我soomething這樣的... <列名= 「名稱1」 值= 「值1」> <列名= 「NAME2」 值= 「值2」> <列名= 「NAME3」值= 「值3」> <行名稱= 「NAME1」 的值= 「VALUE1」> <行名稱= 「NAME2」 值= 「VALUE2」> <行名稱= 「NAME3」 值=「value3」> user1977936 2013-03-08 11:28:10

+0

@ user1977936這應該在任何PC上呈現相同的方式。 **你的**代碼中的'columns'和'rows'變量是什麼? – 2013-03-08 11:29:36

+0

@ lazyberezovsky keyvaluepair的列表 – user1977936 2013-03-08 11:36:29

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)))); 
+0

同樣的結果...這就是我以前所擁有的 – user1977936 2013-03-08 11:35:09