问题在于:我的输入是XML文件,类似于:
<BaseEntityClassInfo>
<item>
<key>BaseEntityClassInfo.SomeField</key>
<value>valueData1</value>
</item>
<item>
<key>BaseEntityClassInfo.AdditionalDataClass.SomeOtherField</key>
<value>valueData2</value>
</item>
<item>
<key>BaseEntityClassInfo.AdditionalDataClass.AnotherClassInfo.DisplayedText</key>
<value>valueData3</value>
</item>
...
...
</BaseEntityClassInfo>
<key>
元素以某种方式描述了实体类字段和关系(在我无权访问的其他应用程序中使用),而<value>
存储了我需要的实际数据。
我的目标是以编程方式从此XML生成一个类型化的数据集,然后可以将其用于创建报告。我想先从输入XML文件构建一些XSD架构,然后使用这个架构生成数据集,但我不知道该怎么做。问题是我不希望一个表中的所有数据,我需要几个基于<key>
值的关系表,所以我想我需要以某种方式从XML <key>
数据推断出关系结构。还有其他方法吗?我应该使用XSLT,Linq2XML吗?
那你觉得怎么样?如何做到这一点以及最佳方法是什么? 任何建议,想法和建议都非常赞赏! 任何人?在下面的评论中还有一些额外的信息......
答案 0 :(得分:1)
不幸的是,您实际上无法使用任何XML工具来构建数据集,因为您需要的数据不是以XML格式存储的:它以“其他应用程序”正在使用的格式存储。如果它看起来像:
<BaseEntityClassInfo SomeField="valueData1">
<AdditionalDataClass SomeOtherField="valueData2">
<AnotherClassInfo DisplayedText="valueData3">
</AdditionalDataClass>
</BaseEntityClassInfo>
然后你可以使用.Net中的标准XML处理程序,但由于它不是,你可以做的最好的事情就是将键和值作为字符串对拉出,然后编写自己的代码来将密钥解析为数据实体你需要(例如,在句点上拆分键,然后递归匹配或创建数据结构)。
答案 1 :(得分:1)
如果没有看到你所有的数据,我将不得不猜测,但看起来xml可能基于类结构:
using System;
[Serializable]
public class BaseEntityClassInfo
{
public string SomeField {get; set;}
public AdditionalDataClass _AdditionalDataClass {get; set;}
public class AdditionalDataClass
{
public string SomeOtherField {get; set;}
public AnotherClassInfo _AnotherClassInfo {get; set;}
}
public class AnotherClassInfo
{
public string DisplayedText {get; set;}
}
public BaseEntityClassInfo BaseEntityClassInfoCreate()
{
BaseEntityClassInfo instance =
new AdditionalDataClass
{
SomeField = "valueData1",
_AdditionalDataClass =
new AdditionalDataClass
{
SomeOtherField = "ValueData2",
_AnotherClassInfo =
new AnotherClassInfo { DisplayedText = "valueData3" }
}
};
return instance;
}
}
...然后将类结构序列化为XML。
此结构可以使用您的真实数据进行扩展,如果您最终说出
List<BaseEntityClassInfo>
这可能是您的DataSet的DataSource。