У меня есть следующий XML:XElement.Value лишает XML-теги из содержания
<Message>
<Identification>c387e36a-0d79-405a-745c-7fc3e1aa8160</Identification>
<SerializedContent>
{"Identification":"81d090ca-b913-4f15-854d-059055cc49ff","LogType":0,"LogContent":"{\"EntitiesChanges\":\"
<audit>
<username>acfc</username>
<date>2015-06-04T15:15:34.7979485-03:00</date>
<entities>
<entity>
<properties>
<property>
<name>DepId</name>
<current>2</current>
</property>
<property>
<name>FirstName</name>
<current>camila</current>
</property>
</properties>
</entity>
</entities>
</audit>\",\"FeatureName\":\"Adicionar Cliente\",\"Operations\":0,\"MachineNameOrigin\":\"VERDE\"}"}
</SerializedContent>
</Message>
и этот код:
[HttpPost]
[ActionName("Message")]
public HttpResponseMessage MessageListener()
{
var requestString = Request.Content.ReadAsStringAsync().Result;
try
{
var xdoc = XDocument.Parse(requestString);
var xSerializedContent = xdoc.Root.Element("SerializedContent");
var serializedContent = xSerializedContent.Value;
}
catch (XmlException e)
{
return CreateHttpResponseMessage("Invalid XML. " + e.Message);
}
catch (Exception e)
{
return CreateHttpResponseMessage(e.Message);
}
}
serializedContent
из xSerializedContent.Value
это:
{
"Identification":"81d090ca-b913-4f15-854d-059055cc49ff",
"LogType":0,
"LogContent":"{\"EntitiesChanges\":\"acfc2015-06-04T15:15:34.7979485-03:00DepId2FirstNamecamila\",\"FeatureName\":\"Adicionar Cliente\",\"Operations\":0,\"MachineNameOrigin\":\"VERDE\"}"
}
Как мы видим, <SerializedContent>
является JSON и внутри JSON. У меня есть еще один XML внутри EntitiesChanges
. Как избежать удалений XML-тегов из<SerializedContent>
?
Ожидаемый результат:
{
"Identification":"81d090ca-b913-4f15-854d-059055cc49ff",
"LogType":0,
"LogContent":"{\"EntitiesChanges\":\"<audit><username>acfc</username><date>2015-06-04T15:15:34.7979485-03:00</date><entities><entity><properties><property><name>DepId</name><current>2</current></property><property><name>FirstName</name><current>camila</current></property></properties></entity></entities></audit>\",\"FeatureName\":\"Adicionar Cliente\",\"Operations\":0,\"MachineNameOrigin\":\"VERDE\"}"
}
Используйте CDATA в своем XML? – Bas
На самом деле - помимо всего прочего, это действительно ужасный формат. Неясно, предназначены ли вложенные элементы XML как XML или часть текстовых узлов. Свойство «Значение» делает именно то, для чего оно предназначено, - это конкатенация потоковых текстовых узлов. –
@bas, моя система получает этот xml от третьей стороны и, к сожалению, на данный момент, по крайней мере, я не могу изменить формат. – augustocosta