在 C# .NET 中将简单的 JSON / XML 转换为具有命名空间的 XML
本文关键字:XML 转换 命名空间 JSON NET 简单 | 更新日期: 2023-09-27 18:33:47
在不使用强类型类 (C#( 的情况下,将 json(或简单的 XML(转换为具有命名空间(或特定架构(的 XML 的最佳方法是什么?(使用 XSD、XSLT、模板引擎或其他基于文本的引擎(。
最有效的方法是什么(资源/性能(?
例如,在 json - string 中获取以下对象:
{
'item': {
'name': 'item #1'
'code': 'itm-123'
'image': {
'@url': 'http://www.foo.com/bar.jpg'
}
}
}
并将其转换为:
<foo:item>
<foo:name>item #1</foo:name>
<foo:code>itm-123</foo:code>
<foo:image url="http://www.foo.bar"/>
</foo:item>
(对象可能比上面的例子更复杂(
谢谢
您可以使用
json.net 来执行此操作。阅读另一篇文章
它显示了相反的方式,但应该几乎相同。
使用开源库Cinchoo ETL,可以轻松完成此转换,
如下所示string json = @"
{
'item': {
'name': 'item #1',
'code': 'itm-123',
'image': {
'@url': 'http://www.test.com/bar.jpg'
}
}
}";
StringBuilder xml = new StringBuilder();
using (var r = ChoJSONReader.LoadText(json))
{
using (var w = new ChoXmlWriter(xml)
.IgnoreRootName()
.IgnoreNodeName()
.WithDefaultXmlNamespace("foo", "http://temp.com")
)
{
w.Write(r);
}
}
Console.WriteLine(xml.ToString());
输出:
<foo:item xmlns:foo="http://temp">
<foo:name>item #1</foo:name>
<foo:code>itm-123</foo:code>
<foo:image url="http://www.test.com/bar.jpg" />
</foo:item>
样品小提琴:https://dotnetfiddle.net/MITsuL
免责声明:我是这个库的作者。