c# - 如何在生成时删除 XML 中的类型?

标签 c# xml json ssis

我在文本文件中有 1000 条记录。我的要求是将数据插入到 SQL Server 中。为此,如果我可以转换为 XML 或推送到脚本组件也很好。

源文本文件包含这种格式...

[{"ID":1,"Name":"test1","State":"AP"},{"ID":2,"Name":"test2","State":"KN"},{"ID":3,"Name":"test3","State":null}]

String json = System.IO.File.ReadAllText(@"C:\t1.txt");
byte[] bytes = Encoding.ASCII.GetBytes();
using (var stream = new MemoryStream(bytes))
{
  var quotas = new XmlDictionaryReaderQuotas();
  var jasonreader - JsonReaderWriterFactory.CreateJasonReader(stream,quotas);
  var xml = XDocument.Load(jsonreader);
  xmlDocument xd = new XmlDocument();

  using (steamwriter fs = new streamwriter(@"C:\t.xml");
{
  fs.write(xml);
}
  console.writeLine(xml);
}

输出-

<root type="array"
  <item type="object">
     <ID type="number">1</ID>
     <Name type="string">test1</Name>
     <State type="string">AP</State>
  </item>
<item type="object">
<root type="array"
  <item type="object">
     <ID type="number">2</ID>
     <Name type="string">test2</Name>
     <State type="string">KN</State>
  </item>
<item type="object">
<root type="array"
  <item type="object">
     <ID type="number">3</ID>
     <Name type="string">test3</Name>
     <State type="string"></State>
  </item>
</root>

当我使用 SSIS XML Source 任务时,正在获取列...

外部列:

type
text
item_id

输出列:

type
text
item_id

理想情况下,我应该获得 ID、Name 和 State 列。问题是什么?我怎样才能摆脱 XML 中的类型?

最佳答案

使用 Linq 怎么样? (使用 Json.Net )

var jArr = JArray.Parse(File.ReadAllText(filename));
XElement root = new XElement("root");

foreach(JObject jObj in jArr )
{
    root.Add(new XElement("item", jObj.Properties()
                                      .Select(p => new XElement(p.Name, 
                                                                p.Value.ToString()))
                                      .ToArray()));
}

var xml = root.ToString();

或者使用更多的 linq

var jArr = JArray.Parse(File.ReadAllText(filename));
XElement root = new XElement("root");
root.Add( jArr.Cast<JObject>()
              .Select(jObj => new XElement("item", jObj.Properties()
                                                       .Select(p => new XElement(p.Name, 
                                                                                 p.Value.ToString()))
                                                       .ToArray())));

var xml = root.ToString();

关于c# - 如何在生成时删除 XML 中的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364835/

相关文章:

c# - 可能错误的空语句警告

c# - 如何使用 C# 和 .NET 3.5 创建 SAML 2.0 响应?

java - 在 ViewStub 更改之间滑动

android Json自动刷新

javascript - 如何使用 JavaScript 永久修改单独文件上的 JSON 对象?

c# - Sharepoint Online 无法使用 CSOM 创建 DocumentSet Microsoft.SharePoint.Client.DocumentManagement.dll

c# - 使用泛型重载运算符

java - Google map v2 膨胀 XML 时出错

json - ConvertFrom-Json : Invalid object passed in, ':' 或 '}' 预期

c# - 替换c#中字符串的最后一个字符