【发布时间】:2020-03-13 21:59:02
【问题描述】:
我正在尝试将带有特殊字符(Tab)的 XML 转换为 Json 以获取以下 xml:
<Request>
<HEADER>
<uniqueID>2019111855545921230</uniqueID>
</HEADER>
<DETAIL>
<cmnmGrp>
<coNm>IS XYZ INC.</coNm>
<embossedNm>ANNA ST UART</embossedNm>
<cMNm>ST UART/ANNA K</cMNm>
<cmfirstNm>ANNA</cmfirstNm>
<cmmiddleNm>K</cmmiddleNm>
<cm2NdLastNm>ST UART</cm2NdLastNm>
</cmnmGrp>
</DETAIL>
</Request>
我在 Json 中的输出低于:
{
"Request": {
"HEADER": { "uniqueID": "2019111855545921230" },
"DETAIL": {
"cmnmGrp": {
"coNm": "IS XYZ INC.",
"embossedNm": "ANNA ST\t\tUART",
"cMNm": "ST\t\tUART/ANNA K",
"cmfirstNm": "ANNA",
"cmmiddleNm": "K",
"cm2NdLastNm": "ST\t\tUART"
}
}
}
}
以上响应包含特殊字符。如何删除制表符空格的 \t 。我正在使用以下代码进行 xml 到 Json 的转换:
var xml = @"Input xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
string json = JsonConvert.SerializeXmlNode(xmlDoc, Newtonsoft.Json.Formatting.None);
我期待最终的 Json 输出如下:
{
"Request": {
"HEADER": { "uniqueID": "2019111855545921230" },
"DETAIL": {
"cmnmGrp": {
"coNm": "IS XYZ INC.",
"embossedNm": "ANNA ST UART",
"cMNm": "ST UART/ANNA K",
"cmfirstNm": "ANNA",
"cmmiddleNm": "K",
"cm2NdLastNm": "ST UART"
}
}
}
}
任何人都可以帮助解决这个问题。 谢谢。
【问题讨论】:
-
\t是 JSON 转义选项卡的方式...我在这里没有发现任何问题。见stackoverflow.com/a/19176131/2957232 -
不清楚你想要的最终结果是什么。标签完全删除?在转换之前修改 XML 文档可能是最简单的方法
-
如果你想重新打开标签(我不明白为什么)你可以做类似
json.Replace("\\t", "\t"); -
请根据您的期望编辑问题,而不是使用 cmets。但从根本上说,在 JSON 中有一个文字选项卡和
\t在所有解析器下应该是等效的。见tools.ietf.org/html/rfc8259#section-7