Из следующего XML-ввода:
<root>
<node name="one" value="1"/>
<node name="two" value="2"/>
<node name="three" value="3"/>
<node name="four" value="4"/>
</root>";
Мне нужно использовать LINQ to 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>
Этот код создает элементы name , но не элементы value .
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 (закомментированное выше) внутри последней скобки, то это дочерний элемент элемента name , но за пределами закрывающей скобки он больше не имеет доступа на q (вне запроса).
Такое ощущение, что мне нужно объединить два элемента XElements вместе или как-то включить их в другую коллекцию, которая не создает XML.