【问题标题】:How to generate Xml or Json Output Format from Xml raw string?如何从 Xml 原始字符串生成 Xml 或 Json 输出格式?
【发布时间】:2019-04-27 15:43:04
【问题描述】:

我正在尝试使用 FormatFilter 来生成 'json' 或 'xml' 控制器响应输出。

问题是我的起点是一个随机的(格式良好的)xml 字符串。

我正在使用 DotNet Core 2.2,这就是我现在在控制器中所拥有的:

        [HttpGet("values.{format}"), FormatFilter]
        public ActionResult TestObjectOutput()
        {
            string xml = DynamicXmlRawString();

            XDocument doc = XDocument.Parse(xml);
            string json = JsonConvert.SerializeXNode(doc);
            dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json);

            return Ok(obj);
        }

        public static string DynamicXmlRawString()
        {
            return $@"<Result><DateTime>{DateTime.Now}</DateTime><User><Someone>12345678</Someone></User></Result>";
        }

json 的输出响应如期而至。

$ curl -i -X GET http://0.0.0.0:5000/api/values/object.json

{"Result":{"DateTime":"27/04/2019 16:31:27","User":{"Someone":"12345678"}}}

xml 的响应返回 HTTP/1.1 406 Not Acceptable

curl -i -X GET http://0.0.0.0:5000/api/values/object.xml

服务器错误:

An error occurred while trying to create an XmlSerializer for the type 'System.Dynamic.ExpandoObject'.

预期结果:

&lt;Result&gt;&lt;DateTime&gt;27/04/2019 16:40:05&lt;/DateTime&gt;&lt;User&gt;&lt;Someone&gt;12345678&lt;/Someone&gt;&lt;/User&gt;&lt;/Result&gt;

知道如何解决这个问题吗?

谢谢

【问题讨论】:

  • 你能用模型类(代表XML)代替ExpandoObject吗?比如动态obj = JsonConvert.DeserializeObject(json);
  • 不,因为它是一个“匿名”xml 文档。我事先不知道xml架构。

标签: c# json xml .net-core format


【解决方案1】:

好像我想多了……问题解决了。

        [HttpGet("values.{format}"), FormatFilter]
        public ActionResult TestObjectOutput()
        {
            string xml = DynamicXmlRawString();

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml);

            return Ok(xmlDoc);
        }

        public static string DynamicXmlRawString()
        {
            return $@"<Result><DateTime>{DateTime.Now}</DateTime><User><Someone>12345678</Someone></User></Result>";
        }


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多