在 .NET 中,如何从XElement读取文本内容?
例如,从 XElement
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
我想要字符串 'Alice & Bob'
我试过element.Value
了,但返回的是“爱丽丝和山猫”:(
XElement t = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = (t.FirstNode as XText).Value;
仅仅因为我最近有类似的要求,我提供:
var x = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
var text = string.Concat(x.Nodes().OfType<XText>().Select(t => t.Value));
不会捕获子节点的文本内容,但会连接当前元素中所有未标记的文本节点。
试试下面的代码它可能对你有帮助..
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();
}
}
}
使用element.FirstNode
您可以获得元素内部的原始内容,“Alice & Bob”,因此您只需“取消转义”&符号,您将获得您期望的结果。
XElement t= XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = t.FirstNode.ToString();
XElement t= Xelement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = t.toString();