如何在生成时删除 XML 中的类型
本文关键字:XML 类型 删除 | 更新日期: 2023-09-27 18:33:44
我在文本文件中有 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 源任务时,我正在获取列...
外部列:
type
text
item_id
输出列:
type
text
item_id
理想情况下,我应该获取 ID、名称和状态列。问题出在哪里?如何摆脱 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();