【问题标题】:convert xml string to json - remove xelement key将 xml 字符串转换为 json - 删除 xelement 键
【发布时间】:2018-04-23 08:06:06
【问题描述】:

我使用 c#,我有来自数据库的 xml 字符串,如下所示:

<ds>
  <table>
    <user>someuser1</user>
    <login>true</login>
  </table>
  <table>
    <user>someuser2</user>
    <login>true</login>
  </table>
</ds>

如何将其转换为 JObject 或 JArray 到此输出?

[{ user: 'someuser1', login: 'true' }, { user: someuser2, login: 'false'} ]

我尝试这样做,但这不是我所期望的。

var x = XElement.Parse(theXml).Elements("table");
var y = JsonConvert.SerializeObject(x);

它得到: [{ table: {user: ....} }, table: {....}]

【问题讨论】:

    标签: c# json xml linq


    【解决方案1】:

    我的解决方案:

            var elements = XElement.Parse( xml ).Elements( "table" );
            var json = JsonConvert.SerializeObject( elements.Select( x => new
            {
                user = x.Element( "user" ).Value,
                login = x.Element( "login" ).Value
            } ) );
    

    【讨论】:

      【解决方案2】:

      试试这个代码:

      string xmlRaw = @"<ds>
                               <table>
                                <user>someuser1</user>
                                <login>true</login>
                               </table>
                               <table>
                                <user>someuser2</user>
                                <login>true</login>
                               </table>
                              </ds>";
      XmlDocument xml = new XmlDocument();
      xml.LoadXml(xmlRaw);
      string json = JsonConvert.SerializeXmlNode(xml.SelectSingleNode("/ds"));
      int startBracket = json.IndexOf('[');
      int length = json.IndexOf(']', startBracket) - startBracket + 1;
      json = json.Substring(startBracket, length);
      

      【讨论】:

        【解决方案3】:

        这段代码给出了你的数组:

        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(theXML);
        
        string json = JsonConvert.SerializeXmlNode(xmlDocument);
        JObject jObject = JObject.Parse(json);   
        
        JArray jArray = (JArray) jObject.SelectToken("ds.table");
        

        【讨论】:

          猜你喜欢
          • 2015-11-16
          • 1970-01-01
          • 2011-03-09
          • 2012-10-26
          • 2016-03-17
          • 1970-01-01
          • 1970-01-01
          • 2019-10-29
          • 1970-01-01
          相关资源
          最近更新 更多