從下面的XML輸入:如何將LINQ to XML語句中的兄弟XElements返回?
<root>
<node name="one" value="1"/>
<node name="two" value="2"/>
<node name="three" value="3"/>
<node name="four" value="4"/>
</root>";
我需要使用LINQ到XML,以產生以下:
<root>
<name content="one"/>
<value content="1"/>
<name content="two"/>
<value content="2"/>
<name content="three"/>
<value content="3"/>
<name content="four"/>
<value content="4"/>
</root>
此代碼將產生名稱元素,但不是值元件。
var input = @"
<root>
<node name=""one"" value=""1""/>
<node name=""two"" value=""2""/>
<node name=""three"" value=""3""/>
<node name=""four"" value=""4""/>
</root>";
var xml = XElement.Parse(input);
var query = new XElement("root",
from p in xml.Elements("node")
select new XElement("name",
new XAttribute("content", p.Attribute("name").Value) /*,
new XElement("value", new XAttribute("content", p.Attribute("value").Value)) */
)
);
如果我有最後一個括號裏面的值的XElement(以上註釋),那麼它是名元素的一個孩子,但右括號外面不再訪問q (它在查詢之外)。
感覺就像我需要將兩個XElements連接在一起,或者以某種方式將它們包含在另一個不產生任何XML的集合中。
我明白這是做什麼。現在看看我是否可以將它適應於我的真實代碼。花了我一分鐘才弄清楚。 –
+1這是更優雅的方式來做到這一點。 –