从XElement中读取文本内容

时间:2012-10-15 14:54:10

标签: c# .net xml linq xelement

在.NET中,如何阅读XElement中的文本内容?

例如,来自XElement

XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>")

我想要字符串&#39; Alice&amp;鲍勃&#39;


我尝试了element.Value,但又返回了爱丽丝&amp;山猫&#39; :(

6 个答案:

答案 0 :(得分:11)

 XElement t = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
 string s = (t.FirstNode as XText).Value;

答案 1 :(得分:6)

仅仅因为我最近有类似的要求,我提供了:

var x = XElement.Parse("<tag>Alice &amp; 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 &amp; 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”,所以你只需要“unes​​cape”&符号,你就会得到你期望的结果。

答案 4 :(得分:0)

XElement t= XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
string s = t.FirstNode.ToString();

答案 5 :(得分:0)

XElement t= Xelement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
string s = t.toString();