我有一些要转换为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>"
}
答案 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();
}