如何捕捉/各种子阵列发送XML文档? [英] How to catch/send XML doc with various sub arrays?

查看:84
本文介绍了如何捕捉/各种子阵列发送XML文档?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

即时通讯与一些web服务工作,我遇到了一些拼图凡与我有限的颇有基础无法解析。即时通讯的主要目的的阵列内的内的对象和另一个对象的阵列的阵列工作

即时通讯使用不同对象是这样的:


  

公共类OBJECT1


  
  

{


  
  

公共字符串ITEM1;


  
  

公共字符串ITEM2;


  
  

公共字符串项目3;


  
  

}


  
  

公共类Object2的


  
  

{


  
  

公共字符串ITEM1;


  
  

公共字符串ITEM2;


  
  

公共OBJECT1 []项目3;


  
  

}


  
  

公共类OBJECT3


  
  

{


  
  

公共字符串ITEM1;


  
  

公共字符串ITEM2;


  
  

公共Object2的[]项目3;


  
  

}


所以,我的难题是当我从数据库基于3对象之一中的一个元素上进行协商。

让我解释一下:

当我从OBJECT1搜索一个元素,我可以从其他对象获得1个或多个项目。

所以problema是我怎么可以把所有的信息表或XML文档或数据集内,我真的没有任何线索从哪里开始,因为我想打这样的结构法:


  

Object3 [N]


  
  

ITEM1


  
  

项目2


  
  

Object2的[1]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  

Object2的[2]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  

Object2的[3]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  


     。
     。
     Object2的[N]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  


  
  


  
  


  
  

Object3 [N]


  
  

ITEM1


  
  

项目2


  
  

Object2的[1]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  

Object2的[2]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  

Object2的[3]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


  
  


     。
     。
     Object2的[N]
        项目1
        ITEM2

  Object1 [1]
     ITEM1
     ITEM2
     项目3
  Object1 [2]
     ITEM1
     ITEM2
     项目3
  Object1 [3]
     。
     。
     。
  Object1 [N]


我真的不知道从哪里开始赶上这一点,我已经拿到了结构,但我需要一个提示,从哪里开始,我希望你们能帮助我。

林与Visual Studio 2008 C#和SQL Server和Web服务的工作。

希望有人能帮助我这个问题,还是要谢谢你。

问候。


解决方案

您可以使用内置的 DataContract 功能把你的对象图与你提到的嵌套的XML文档。

两部分组成:


  1. 注释你的类与适当的属性。

      [DataContract(命名空间=DataContracts)]
    公共类Foo
    {
        [数据成员]
        公共字符串第一;    [数据成员]
        公共字符串二;    [数据成员]
        公共字符串第三;}[DataContract(命名空间=DataContracts)]
    公共类酒吧
    {
        [数据成员]
        公共字符串第一;    [数据成员]
        公共字符串二;    [数据成员]
        公共富[] ManyFoos;
    }[DataContract(命名空间=DataContracts)]
    公共类根
    {
        [数据成员]
        公共字符串第一;    [数据成员]
        公共字符串二;    [数据成员]
        公共酒吧[] ManyBars;
    }


  2. 使用DataContractSerializer的你的对象图转换为XML文档。

      VAR根=新根()
    {
        ...剪断,对象初始化...
    };VAR串行=新的DataContractSerializer(typeof运算(根));
    VAR xmlStringBuilder =新的StringBuilder();
    使用(VAR的XmlWriter = XmlWriter.Create(xmlStringBuilder,新XmlWriterSettings(){缩进=真}))
    {
        serializer.WriteObject(XmlWriter的,根);
    }变种的xmlString = xmlStringBuilder.ToString();


这生成以下XML(如我反正)。

 <?XML版本=1.0编码=UTF-16&GT?;
<根的xmlns:I =htt​​p://www.w3.org/2001/XMLSchema-instance的xmlns =DataContracts>
  <第一> Root01_First< /第一>
  < ManyBars>
    <酒吧GT;
      <第一> Bar01_First< /第一>
      < ManyFoos>
        <富>
          <第一> Foo01_First< /第一>
          <第二> Foo01_Second< /秒>
          <第三> Foo01_Third< /三>
        < /美孚>
        <富>
          <第一> Foo02_First< /第一>
          <第二> Foo02_Second< /秒>
          <第三> Foo02_Third< /三>
        < /美孚>
      < / ManyFoos>
      <第二> Bar01_Second< /秒>
    < /酒吧>
    <酒吧GT;
      <第一> Bar02_First< /第一>
      < ManyFoos>
        <富>
          <第一> Foo03_First< /第一>
          <第二> Foo03_Second< /秒>
          <第三> Foo03_Third< /三>
        < /美孚>
      < / ManyFoos>
      <第二> Bar02_Second< /秒>
    < /酒吧>
  < / ManyBars>
  <第二> Root01_Second< /秒>
< /根>

im working with some webservices and i ran into some puzzle where with my limited knoledge can not resolve. Im working with arrays of objects within and array of another object within an array of a main object.

Im using various objects like this:

public class OBJECT1

{

public string item1;

public string item2;

public string item3;

}

public class OBJECT2

{

public string item1;

public string item2;

public OBJECT1[] item3;

}

public class OBJECT3

{

public string item1;

public string item2;

public OBJECT2[] item3;

}

So my puzzle comes when i consult from a database based on one element within one of the 3 object.

Let me explain:

When i search one element from OBJECT1 i can get 1 or more ítems from the other objects.

So the problema is how can i put all the information within a table or an XML doc or a dataset, i really dont have any clue to where to start, since i wanna make a structre like this:

Object3[N]

item1

item2

Object2[1] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

Object2[2] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

Object2[3] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

. . . Object2[N] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

.

.

.

Object3[N]

item1

item2

Object2[1] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

Object2[2] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

Object2[3] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

. . . Object2[N] ítem1 item2

 Object1[1]
     item1
     item2
     item3
  Object1[2]
     item1
     item2
     item3
  Object1[3]
     .
     .  
     .
  Object1[N]

I really dont know where to start catching this, i already got the structure, but i need a hint to where to start, i hope you guys can help me.

Im working with Visual Studio 2008 C# and SQL Server and webservices.

Hope anyone can help me with this, thanks anyway.

Greetings.

解决方案

You can use the built in DataContract functionality to turn your object graph into an XML document with the nesting that you mentioned.

Two parts:

  1. Annotate your classes with the appropriate attributes.

    [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;
    }
    

  2. Use the DataContractSerializer to transform your object graph into an XML document.

    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();
    

This produces the following XML (for my example anyway).

<?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>

这篇关于如何捕捉/各种子阵列发送XML文档?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆