2017-01-09 3 views
0

Я пытаюсь включить содержимое html внутри значения атрибута (например, <tag attribute="<b>hi</b>"></tag>). Согласно this, кажется, что это должно быть сделано по умолчанию для типов атрибутов string, однако я получаю недопустимую ошибку символа. Есть ли способ заставить XAttribute относиться к нему как к CDATA?Получение xelement для обработки значения атрибута xml как CDATA

ответ

1

Вы не можете указать значения атрибутов XML как CDATA. Что вы можете сделать, вы можете избежать XML, который вы хотите поместить в качестве значения:

<tag attribute="<b>hi</b>"></tag> 

станет

<tag attribute="&lt;b&gt;hi&lt;/b&gt;"></tag> 

Если вы строите документ, и вы хотите добавить этот атрибут все, что вам нужно сделать, это добавить HTML в XAttribute конструктору:

var doc = new XDocument(new XElement("tag", new XAttribute("attribute", "<b>hi</b>"))); 

чтобы получить значение в качестве XML-документа, вы можете использовать этот код:

var doc = XDocument.Parse("<tag attribute=\"&lt;b&gt;hi&lt;/b&gt;\"></tag>"); 
var attributeValue = doc.Root.Attribute("attribute").Value; 

var newDoc = XDocument.Parse(attributeValue); 
+0

спасибо @Damian, я знаю об экранировании html-тегов. Тем не менее, я имел в виду спецификацию XML в сообщении, где кажется, что вам не нужно избегать каких-либо тегов для атрибута, поскольку по умолчанию он рассматривается как CDATA. Мне просто интересно, есть ли способ заставить XElement признать это. – Riz

Смежные вопросы