如何使用Json.NET将带有特殊字符的无效XML转换为JSON

时间:2019-06-03 15:07:20

标签: c# xml json.net

已经有一些关于将XML解析为JSON的文章,但是我还没有遇到跳过验证XML和在C#中正确转换为JSON的事情。

我想使用Json.NET将XML代码转换为JSON(无效)。 XML包含特殊字符,例如: <send to>中的空格,<body/content>中的斜线,!在<!priority>中。

在C#中,XDocument.Parse(xmlString)始终会验证XML,因此转换将引发异常。使用HtmlUtility进行解码/编码会影响XML标记<和>,但我无法使用它。我该如何工作?

一些示例代码可以在下面找到。

输入(字符串):

<root>
<message>
<send to>some@email.com</send to>
<body/content>This is a message!</body/content>
<!priority>high</!priority>
</message>
</root>

预期的输出(字符串):

{
    "root": {
        "message": {
            "send to": "some@email.com",
            "body/content": "This is a message!",
            "!priority": "high"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

不要将其视为“无效的XML”,而应将其视为与XML完全无关的专有语法。没有XML工具可以帮助您。您首先需要为非XML文件定义语法,然后需要为该语法编写解析器。编写完该解析器后,您可以直接生成JSON,也可以生成XML并使用现成的XML到JSON转换器。

或者,如果可能的话,请停止使用专有语法,而使用诸如XML和JSON之类的标准。大多数人在20年前就这样做了,并在此过程中节省了很多钱。