使用HTML字符串数据将XML转换为Json

时间:2018-10-27 00:16:10

标签: json xml json.net xml-serialization json-deserialization

我有一些要转换为Json的XML文档,但是某些字符串字段中包含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结果与众不同吗?还是我可以对deserializeobject进行一些操作以使其忽略HTML标记?

理想情况下,json类似于以下内容,但我认为引号中需要包含一些转义字符。要点是HTML标记不表示单独的节点,而只是该节点的值的一部分。我开始研究XSLT,并认为这可能是一个选择。

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

1 个答案:

答案 0 :(得分:0)

切换到使用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();
    }