13

在 .NET 中,如何从XElement读取文本内容?

例如,从 XElement

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

我想要字符串 'Alice & Bob'


我试过element.Value了,但返回的是“爱丽丝和山猫”:(

4

6 回答 6

11
 XElement t = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
 string s = (t.FirstNode as XText).Value;
于 2012-10-15T15:38:52.897 回答
7

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

var x = XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>")
var text = string.Concat(x.Nodes().OfType<XText>().Select(t => t.Value));

不会捕获子节点的文本内容,但会连接当前元素中所有未标记的文本节点。

于 2017-05-26T15:18:59.590 回答
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();
        }
    }
}
于 2012-10-15T15:12:07.047 回答
0

使用element.FirstNode您可以获得元素内部的原始内容,“Alice & Bob”,因此您只需“取消转义”&符号,您将获得您期望的结果。

于 2012-10-15T15:08:29.870 回答
0
XElement t= XElement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
string s = t.FirstNode.ToString();
于 2012-10-15T15:12:17.680 回答
0
XElement t= Xelement.Parse("<tag>Alice &amp; Bob<other>cat</other></tag>");
string s = t.toString();
于 2018-08-21T19:22:52.973 回答