我正在使用一些web服务,遇到了一些无法解决的难题。我正在处理一个主对象数组中另一个对象数组中的对象数组。
我使用的各种对象如下:
公共类OBJECT1
{
公共字符串项1;
公共字符串项2;
公共字符串项3;
}
公共类OBJECT2
{
公共字符串项1;
公共字符串项2;
public OBJECT1[]item3;
}
公共类OBJECT3
{
公共字符串项1;
公共字符串项2;
public OBJECT2[]item3;
}
因此,当我查阅一个基于三个对象中一个对象中的一个元素的数据库时,我的困惑就来了。
让我解释一下:
当我从OBJECT1中搜索一个元素时,我可以从其他对象中获得一个或多个项目。问题是:如何将所有信息放在表、XML文档或数据集中?我真的不知道从哪里开始,因为我想做一个这样的结构:
Object3[N]
第1项
第2项
对象2[1]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
对象2[2]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
对象2[3]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
。。对象2[N]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
Object3[N]
第1项
第2项
对象2[1]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
对象2[2]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
对象2[3]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
。。对象2[N]ítem1第2项
Object1[1] item1 item2 item3 Object1[2] item1 item2 item3 Object1[3] . . . Object1[N]
我真的不知道从哪里开始抓这个。我已经得到了结构,但我需要一个提示,从哪里开始。我希望你们能帮助我。
我使用的是Visual Studio 2008 C#、SQL Server和web服务。
我希望任何人都能帮我,无论如何谢谢。
问候。
您可以使用内置的DataContract功能将对象图转换为具有您提到的嵌套的XML文档。
两部分:
-
用适当的属性注释类。
[DataContract(Namespace = "DataContracts")] public class Foo { [DataMember] public string First; [DataMember] public string Second; [DataMember] public string Third; } [DataContract(Namespace = "DataContracts")] public class Bar { [DataMember] public string First; [DataMember] public string Second; [DataMember] public Foo[] ManyFoos; } [DataContract(Namespace = "DataContracts")] public class Root { [DataMember] public string First; [DataMember] public string Second; [DataMember] public Bar[] ManyBars; }
-
使用DataContractSerializer将对象图转换为XML文档。
var root = new Root() { ... snip, object initialization ... }; var serializer = new DataContractSerializer(typeof(Root)); var xmlStringBuilder = new StringBuilder(); using (var xmlWriter = XmlWriter.Create(xmlStringBuilder, new XmlWriterSettings() { Indent = true })) { serializer.WriteObject(xmlWriter, root); } var xmlString = xmlStringBuilder.ToString();
这将生成以下XML(无论如何,对于我的示例)。
<?xml version="1.0" encoding="utf-16"?>
<Root xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="DataContracts">
<First>Root01_First</First>
<ManyBars>
<Bar>
<First>Bar01_First</First>
<ManyFoos>
<Foo>
<First>Foo01_First</First>
<Second>Foo01_Second</Second>
<Third>Foo01_Third</Third>
</Foo>
<Foo>
<First>Foo02_First</First>
<Second>Foo02_Second</Second>
<Third>Foo02_Third</Third>
</Foo>
</ManyFoos>
<Second>Bar01_Second</Second>
</Bar>
<Bar>
<First>Bar02_First</First>
<ManyFoos>
<Foo>
<First>Foo03_First</First>
<Second>Foo03_Second</Second>
<Third>Foo03_Third</Third>
</Foo>
</ManyFoos>
<Second>Bar02_Second</Second>
</Bar>
</ManyBars>
<Second>Root01_Second</Second>
</Root>