Lire le texte contenu à partir de XElement
.NET, comment lire le contenu du texte à partir d'un XElement?
Par exemple, à partir de la XElement
XElement.Parse("<tag>Alice & Bob<other>cat</other></tag>")
Je voudrais la chaîne "Alice & Bob'
J'ai essayé element.Value
mais cela revient 'Alice & chat sauvage' 🙁
Je suis assez sûr que c'est mal formé XML, qui est pourquoi vous êtes confronté à un problème. Les balises doivent contenir une valeur ou d'autres balises, pas les deux.
En fait, le HTML n'est pas XML et vice versa. Ils sont liés, certes, mais seulement XHTML est à la fois. en.wikipedia.org/wiki/XHTML. Si vous allez à l'analyse HTML, vous devez utiliser un analyseur HTML. Si vous êtes à l'analyse de XML, je pense toujours que c'est mal formé.
Je ne suis pas sûr si la norme a changé entre maintenant et puis, mais c'est bien formée en XML par la norme actuelle. Le
<p>Perfectly normal for that popular XML language called <b>HTML</b></p>
En fait, le HTML n'est pas XML et vice versa. Ils sont liés, certes, mais seulement XHTML est à la fois. en.wikipedia.org/wiki/XHTML. Si vous allez à l'analyse HTML, vous devez utiliser un analyseur HTML. Si vous êtes à l'analyse de XML, je pense toujours que c'est mal formé.
Je ne suis pas sûr si la norme a changé entre maintenant et puis, mais c'est bien formée en XML par la norme actuelle. Le
tag
nœud a deux nœuds enfants, un nœud de texte et un nœud d'élément. Le problème est plus compliqué avec les Dtd ou schémas, auquel cas il peut ne pas être possible de spécifier exactement ce type de format.OriginalL'auteur Colonel Panic | 2012-10-15
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur cuongle
Juste parce que j'ai récemment eu une demande similaire, je vous propose:
De ne pas capturer le contenu du texte de nœuds enfants, mais concaténer tous les texte sans les nœuds de l'élément actuel.
Mais sans la concat est grande. La méthode concat sera juste de fusion des chaînes et de rendre le résultat ambigu.
OriginalL'auteur jimbobmcgee
Essayer de code suivant pourrait vous aider..
OriginalL'auteur MMK
À l'aide de
element.FirstNode
vous pouvez obtenir le contenu brut que vous avez à l'intérieur de l'élément, "Alice & Bob", donc vous avez seulement besoin de "ne pas encoder" l'esperluette et vous obtiendrez le résultat que vous attendez.OriginalL'auteur Ricardo Rodriguez
essayez d'utiliser ce string s = Système.Web.HttpUtility.HtmlDecode((string.Format(t.FirstNode.ToString()))); assurez-vous que le Système.Web Dll est d'être référencé.
vous pouvez aussi les utiliser pour le bien string s = Système.Net.WebUtility.HtmlDecode((string.Format(t.FirstNode.ToString())));
mais cela fonctionne aussi. L'échappé de caractères spéciaux sont pas de raison de downvote.
OriginalL'auteur Frank59
OriginalL'auteur Lokiare