本人欲与某高人用Java作的Web Service之间传递数据,高人定义了数据表的XML DTD文件如下:
<!ELEMENT DBSET (ROW*) >
<!ATTLIST DBSET RESULT #IMPLIED>
<!ELEMENT ROW (COL+) >
<!ELEMENT COL (#PCDATA) >
<!ATTLIST COL NAME #REQUIRED >
嵌套使用示例如下:
<DBSET>
  <ROW>
    <COL NAME="ID1">1</COL>
    <COL NAME="省份">湖北省</COL>
    <COL NAME="所辖市">
      <DBSET>
        <ROW>
          <COL NAME="ID2">1</COL>
          <COL NAME="城市">武汉市</COL>
        </ROW>
      </DBSET>
    </COL>
  </ROW>
</DBSET>请问在C#使用如何通过序列化来实现?能用DataSet实现吗?

解决方案 »

  1.   

    还是写个函数遍历你的datatable生成这样的xml吧
      

  2.   

    自己搞定:
    一、先定义几个类:
    [XmlType(TypeName="DBSET")]
    public class DbSet
    {
    public DbSet()
    {
    m_Rows=new Row[2];
    for(int i=0;i<2;i++)
    m_Rows[i]=new Row();
    } private Row[] m_Rows;
    [XmlElement(ElementName="ROW")]//数组序列化为平面的XML序列
    public Row[] Rows
    {
    get{ return m_Rows;}
    set{ m_Rows=value;}
    }
    } [XmlType(TypeName="ROW")]
    public class Row
    {
    public Row()
    {
    m_Columns=new Column[3];
    for(int i=0;i<3;i++)
    {
    m_Columns[i]=new Column();
    m_Columns[i].FieldName="字段"+i.ToString();
    m_Columns[i].FieldValue="值"+i.ToString();
    }
    } private Column[] m_Columns;
    [XmlElement(ElementName="COL")]//数组序列化为平面的XML序列
    public Column[] Columns
    {
    get{ return m_Columns;}
    set{ m_Columns=value;}
    }
    } [XmlType(TypeName="COL")]
    public class Column
    {
    public Column()
    {
    }
    public Column(string strName,string strValue)
    {
    m_strFieldName=strName;
    m_strFieldValue=strValue;
    } private string m_strFieldName;
    [XmlAttribute(AttributeName="NAME",DataType="string")]
    public string FieldName
    {
    get{ return m_strFieldName;}
    set{ m_strFieldName=value;}
    } private string m_strFieldValue;
    [XmlText()]
    public string FieldValue
    {
    get{ return m_strFieldValue;}
    set{ m_strFieldValue=value;}
    }
    }
    二、将DataSet转化为自定义的类
       过程略。过程麻烦了点,希望有高人进一步指定。结贴。