.NET では、 XElementからテキスト コンテンツを読み取るにはどうすればよいですか?
たとえば、XElement から
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
「アリスとボブ」という文字列をお願いします
試してみelement.Value
ましたが、「アリスとボブキャット」が返されます:(
XElement t = XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>");
string s = (t.FirstNode as XText).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();