-->

Prevent XDocument or XElement form Encoding conten

2020-08-01 05:39发布

问题:

When I call XDocument.Save it is encoding my html <br/> tag, is there a way to prevent this?

XDocument xDoc = new XDocument(new XElement("desc","jon skeet <br/> knows, the <br/> answer"));
xDoc.Save(Server.MapPath("~/tempUploads/encodeTest.xml"));

OUTPUT IS:

<?xml version="1.0" encoding="utf-8"?>
<desc>jon skeet &lt;br/&gt; knows, the &lt;br/&gt; answer</desc>

OUTPUT I WOULD LIKE:

<?xml version="1.0" encoding="utf-8"?>
<desc>jon skeet <br/> knows, the <br/> answer</desc>

回答1:

That's expected behavior: You set the inner text of the XElement to that string. It needs to be encoded, otherwise it would create multiple tags.

As you actually want to have multiple tags, you need to create them. The easiest way would be to use XElement.Parse:

var content = XElement.Parse("<desc>jon skeet <br/> knows, the <br/> answer</desc>");
var xDoc = new XDocument(content);