在.NET中,如何阅读XElement中的文本内容?
例如,来自XElement
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
我想要字符串&#39; Alice&amp;鲍勃&#39;
我尝试了element.Value
,但又返回了爱丽丝&amp;山猫&#39; :(
答案 0 :(得分:11)
XElement t = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = (t.FirstNode as XText).Value;
答案 1 :(得分:6)
仅仅因为我最近有类似的要求,我提供了:
var x = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
var text = string.Concat(x.Nodes().OfType<XText>().Select(t => t.Value));
不会捕获子节点的文本内容,但会连接当前元素中所有未标记的文本节点。
答案 2 :(得分:1)
尝试以下代码它可能对您有所帮助..
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
var parent = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
var nodes = from x in parent.Nodes()
where x.NodeType == XmlNodeType.Text
select (XText)x;
foreach (var val in nodes)
{
Console.WriteLine(val.Value);
}
Console.ReadLine();
}
}
}
答案 3 :(得分:0)
使用element.FirstNode
你可以获得元素中的原始内容,“Alice&amp; Bob”,所以你只需要“unescape”&符号,你就会得到你期望的结果。
答案 4 :(得分:0)
XElement t= XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = t.FirstNode.ToString();
答案 5 :(得分:0)
XElement t= Xelement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = t.toString();