首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索包含混合内容的XElement的完整字符串

检索包含混合内容的XElement的完整字符串
EN

Stack Overflow用户
提问于 2013-03-08 03:53:07
回答 6查看 6.3K关注 0票数 7

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

代码语言:javascript
复制
<root>Hello<child>Wold</child></root>

如果我使用XElement.ToString(),这将为我提供

代码语言:javascript
复制
"<root xmnls="someschemauri">Hello<child>World</child></root>"

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

代码语言:javascript
复制
"Hello World"

我需要拿到

代码语言:javascript
复制
"Hello <child>World</child>"

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-08 04:22:08

针对.NET 4的解决方案

代码语言:javascript
复制
var result = String.Join("", rootElement.Nodes()).Trim();

完整代码(适用于.NET 3.5):

代码语言:javascript
复制
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>"

无需加入所有节点即可快速解决问题:

代码语言:javascript
复制
XElement rootElement = XElement.Parse("<root>Hello<child>Wold</child></root>");
var reader = rootElement.CreateReader();
reader.MoveToContent();
string result = reader.ReadInnerXml(); 
票数 4
EN

Stack Overflow用户

发布于 2013-03-08 03:58:27

这样做效果相当好:

代码语言:javascript
复制
//SOLUTION BY Nenad
var element = XElement.Parse("<root>Hello<child>World</child></root>");
string xml = string.Join("", element.DescendantNodes().Select(e => e.ToString()));
Debug.WriteLine(xml);

最终输出:Hello<child>Wold</child>World

尝试#3

代码语言:javascript
复制
XDocument xDoc = XDocument.Parse(@"<root>Hello<child>World</child></root>");
XElement rootElement = xDoc.Root;
Debug.WriteLine(rootElement.Value + rootElement.FirstNode.ToString());
票数 1
EN

Stack Overflow用户

发布于 2013-03-08 04:33:44

这样就可以了:

代码语言:javascript
复制
var element = XElement.Parse("<root>Hello<child>Wold</child></root>");
string xml = string.Join("", element.Nodes().Select(e => e.ToString()));

对于.NET 3.5 (如果这是问题的关键):

代码语言:javascript
复制
var element = XElement.Parse("<root>Hello<child>Wold</child></root>");
string xml = string.Join("", element.Nodes().Select(e => e.ToString()).ToArray());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15280473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档