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


已经

有一些关于将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"
        }
    }
}

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

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

最新更新