Когда я загружаю этот узел XML, HTML внутри узла полностью удаляется.
Это код, который я использую для получения значения в узле, которое представляет собой текст в сочетании с HTML:
var stuff = innerXml.Descendants("root").Elements("details").FirstOrDefault().Value;
Внутри узла "details" находится текст, который выглядит следующим образом:
"This is <strong>test copy</strong>. This is <a href="#">A Link</a>"
Когда я смотрю в "stuff" var, я вижу это:
"This is test copy. This is A Link". There is no HTML in the output... it is pulled out.
Может быть, значение должно быть innerXml или innerHtml?FirstOrDefault () имеет какое-либо отношение к этому?
Я не думаю, что xml нуждается в блоке "cdata" ...
Вот более полный фрагмент кода:
announcements =
from link in xdoc.Descendants(textContainer).Elements(textElement)
where link.Parent.Attribute("id").Value == Announcement.NodeId
select new AnnouncmentXml
{
NodeId = link.Attribute("id").Value,
InnerXml = link.Value
};
XDocument innerXml;
innerXml = XDocument.Parse(item.InnerXml);
var abstract = innerXml.Descendants("root").Elements("abstract").FirstOrDefault().Value;
Наконец, вотфрагмент Xml-узла.Обратите внимание, что в стандартной структуре xml есть «InnerXml».Это начинается с.Я называю это «InnerXml», и это то, что я передаю в XDocument под названием InnerXml:
<text id="T_403080"><root> <title>How do I do stuff?</title> <details> Look Here <a href="http://" target=" _blank">Some Form</a>. Please note that lorem ipsum dlor sit amet.</details> </root></text>
[ОБНОВЛЕНИЕ]
Я попытался использовать эту вспомогательную лямду, и она вернетсяHTML, но он экранирован, поэтому, когда он отображается на странице, я вижу фактический HTML в представлении (вместо ссылки вместо ссылки отображается тег:
Title = innerXml.Descendants("root").Elements("title").FirstOrDefault().Nodes().Aggregate(new System.Text.StringBuilder(), (sb, node) => sb.Append(node.ToString()), sb => sb.ToString());
Поэтому я попыталсяи HTMLEncode, и HTMLDecode, но ни один из них не помог. Один из них отображал экранированные символы на экране, а другой ничего не делал:
Title =
System.Web.HttpContext.Current.Server.HtmlDecode(
innerXml.Descendants("root").Elements("details").Nodes().Aggregate(new System.Text.StringBuilder(), (sb, node) => sb.Append(node.ToString()), sb => sb.ToString())
);