Преобразование XML в Json со строковыми данными HTML

У меня есть XML-документы, которые я пытаюсь преобразовать в Json, но в некоторых строковых полях есть теги HTML (из копирования/вставки текстовых полей из документов Word). Исходный XML выглядит так:

<my:Request_Description>
    <html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
        <div>test</div>
    </html>
</my:Request_Description>

Когда вызывается JsonConvert.SerializeXmlNode, Json выглядит так:

"Request_Description": {
    "html": {
        "@xml:space": "preserve",
        "@xmlns": "http://www.w3.org/1999/xhtml",
        "#significant-whitespace": [
            "\r\n      ",
            "\r\n"
        ],
        "div": "test"
    }
}

Я пытался просто объявить поле как строку, но при вызове deserializeobject ошибка Unexpected character encountered while parsing value.

Есть ли что-то, что я должен сделать на serializexmlnode, чтобы сделать результат Json другим? Или я могу что-то сделать с объектом deserialize, чтобы он игнорировал тег HTML?

В идеале json должен выглядеть примерно так, как показано ниже, но я предполагаю, что некоторые escape-символы должны быть включены для кавычек. Суть в том, что теги HTML НЕ обозначают отдельный узел, а вместо этого являются частью значения узла. Я начал изучать XSLT и подумал, что это может быть вариантом.

{
    "Request_Description": "<html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml"><div>test</div></html>"
}

person pretzelb    schedule 27.10.2018    source источник


Ответы (1)


Перешел на использование XDocument, и этот код заработал.

    XElement req_desc = newxdoc.Root.Element("Request_Description");
    if (req_desc != null)
    {
        XElement replacenode = new XElement(req_desc.Name, req_desc.Value);
        req_desc.Parent.Add(replacenode);
        req_desc.Remove();
    }
person pretzelb    schedule 04.11.2018