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)
执行此操作的适当功能是什么(如果有)?
.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)