在 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>

(对象可能比上面的例子更复杂(

谢谢

在 C# .NET 中将简单的 JSON / XML 转换为具有命名空间的 XML

您可以使用

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

免责声明:我是这个库的作者。