【发布时间】:2013-08-20 17:26:11
【问题描述】:
我正在使用(Newtonsoft 的)JSON.Net 库和 C#,我想自定义其默认 XML 转换的单个部分。
例如,如果我想更改数组的 XML 转换,比说我有以下 JSON 字符串:
{
"object":
{
"a":
{
[
"d",
"e",
"f"
]
}
}
}
如果我使用 JSON.Net 的默认转换器将其转换为 XML,我会得到:
<object>
<a>d</a>
<a>e</a>
<a>f</a>
</object>
但是,我希望它转换为:
<object>
<a special:type="array">
<element>d</element>
<element>e</element>
<element>f</element>
</a>
</object>
我可以采用现有的转换方法并稍微改变一下吗?
XML 和 JSON 都是基于树的结构,这应该使它们的解析器模块化。因此,我正在寻找一个可以用来覆盖其转换函数的类:
protected override XmlNode ToXmlNode(JsonNode jNode)
{
if (jNode.Type == JsonType.Array)
{
XmlNode xNode = this.XDocument.CreateElement(jNode.Name)
foreach (JsonNode jSub in jNode.Children)
{
var newJSub = jSub.Clone();
newJSub.Name = "element";
xNode.AppendChild(this.ToXmlNode(newJSub));
}
return xNode;
}
else
return base.ToXmlNode(jNode);
}
(我使用的是 .Net v2.0)
有谁知道有什么可以帮忙的吗?
【问题讨论】:
-
我看不到任何方法可以覆盖您在 XmlNodeConverter 类中需要的内容。您可能需要创建自己的 JsonTextWriter 继承者并将其传递给 XmlNodeConverter。
标签: c# xml json json.net converter