В.NET, как читать текстовый контент из XElement?
Например, из XElement
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
Я бы хотел, чтобы строка "Алиса и Боб"
Я попробовал element.Value
но это возвращает "Alice & Bobcat" :(
В.NET, как читать текстовый контент из XElement?
Например, из XElement
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
Я бы хотел, чтобы строка "Алиса и Боб"
Я попробовал element.Value
но это возвращает "Alice & Bobcat" :(
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", поэтому вам нужно только "unescape" амперсанд, и вы получите результат, которого вы ожидаете.
XElement t= XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = t.FirstNode.ToString();