检索具有混合内容的完整XElement字符串

Mac*_*gon 7 c# xml linq-to-xml .net-3.5

假设我在一个XElement对象中有以下内容

<root>Hello<child>Wold</child></root>
Run Code Online (Sandbox Code Playgroud)

如果我使用XElement.ToString(),这给了我

"<root xmnls="someschemauri">Hello<child>World</child></root>"
Run Code Online (Sandbox Code Playgroud)

如果我使用XElement.Value,我会得到

"Hello World"
Run Code Online (Sandbox Code Playgroud)

我需要得到

"Hello <child>World</child>"
Run Code Online (Sandbox Code Playgroud)

执行此操作的适当功能是什么(如果有)?

Ser*_*kiy 6

.NET 4 的解决方案

var result = String.Join("", rootElement.Nodes()).Trim();
Run Code Online (Sandbox Code Playgroud)

完整代码(针对.NET 3.5):

XElement rootElement = XElement.Parse("<root>Hello<child>Wold</child></root>");
var nodes = rootElement.Nodes().Select(n => n.ToString()).ToArray();
string result = String.Join("", nodes).Trim();
Console.WriteLine(result);
// writes "Hello<child>World</child>"
Run Code Online (Sandbox Code Playgroud)

无需加入所有节点的快速解决方案:

XElement rootElement = XElement.Parse("<root>Hello<child>Wold</child></root>");
var reader = rootElement.CreateReader();
reader.MoveToContent();
string result = reader.ReadInnerXml(); 
Run Code Online (Sandbox Code Playgroud)