简体   繁体   English

如何使用C#通过XSL将XML加载到DataSet中

[英]How to load a XML into a DataSet via XSL with C#

I'm trying to load a xml which contains metadata, for example: 我正在尝试加载包含元数据的xml,例如:

<DataSet>
        <DataTable id="Estrutura">
          <Columns>
            <Column FieldName="ORDEM" DisplayLabel="ORDEM" DataType="Integer" Required="0" Size="0"/>
            <Column FieldName="NOME" DisplayLabel="NOME" DataType="String" Required="0" Size="100"/>
            <Column FieldName="NIVEL" DisplayLabel="NIVEL" DataType="Integer" Required="0" Size="0"/>
            <Column FieldName="INDICE_IMAGEM" DisplayLabel="INDICE_IMAGEM" DataType="Integer" Required="0" Size="0"/>
            <Column FieldName="TIPO" DisplayLabel="TIPO" DataType="String" Required="0" Size="100"/>
          </Columns>
          <Rows>
            <Row ORDEM="4" NOME="DUnit Pré-Libor6M" NIVEL="3" INDICE_IMAGEM="12" TIPO="Carteira"/>
            <Row ORDEM="3" NOME="DUnit CDI-Libor6M" NIVEL="3" INDICE_IMAGEM="12" TIPO="Carteira"/>
            <Row ORDEM="2" NOME="DUnit RF_Swaps" NIVEL="2" INDICE_IMAGEM="10" TIPO="Pasta"/>
            <Row ORDEM="1" NOME="DUnit RF_Swaps" NIVEL="1" INDICE_IMAGEM="2" TIPO="Tesouraria"/>
            <Row ORDEM="0" NOME="DUnit" NIVEL="0" INDICE_IMAGEM="0" TIPO="Instituição"/>
          </Rows>
        </DataTable>
        <DataTable id="Parametro;RME">
          <Columns>
            <Column FieldName="Definição" DisplayLabel="Definição" DataType="String" Required="0" Size="50"/>
            <Column FieldName="Valor" DisplayLabel="Valor" DataType="String" Required="0" Size="150"/>
          </Columns>
          <Rows>
            <Row Definição="Padrão da Cota" Valor="Fechamento"/>
            <Row Definição="Data Inicial" Valor="11/1/2011"/>
            <Row Definição="Data Final" Valor="12/1/2011"/>
            <Row Definição="Formas Apuração" Valor="Customizado"/>
            <Row Definição="Tipo Preço Stock" Valor="Fechamento"/>
            <Row Definição="Data Atual/Hora" Valor="18/8/2011 17:42:00"/>
            <Row Definição="Usuário" Valor="DUNIT"/>
            <Row Definição="Definições de Cálculo" Valor="Usuário"/>
            <Row Definição="Moeda Visual" Valor="REAL"/>
            <Row Definição="Tipo Financeiro" Valor="Líquida"/>
            <Row Definição="Tipo Rentabilidade" Valor="Líquida"/>
            <Row Definição="Método Rentabilidade" Valor="TIR"/>
            <Row Definição="Quantidade de Barras no Gráfico" Valor="10"/>
            <Row Definição="Usa Todas as Barras no Gráfico" Valor="Não"/>
          </Rows>
        </DataTable>
</DataSet>

Well, how it's possible to see, it's look like a dataset structure, but I'm not getting this do work. 那么,它怎么可能看到,它看起来像一个数据集结构,但我没有得到这个工作。 I think the way is try xls, but, how can I make a xls which turn this xml code in a xml recognizable by a DataSet. 我认为方法是尝试xls,但是,我怎样才能创建一个xls,将xml代码转换为可由DataSet识别的xml。 In other words, how can I make this XSL and load it together with XML to be recognizable by the DataSet? 换句话说,我如何制作这个XSL并将其与XML一起加载以便DataSet可识别?

Thank you. 谢谢。

You'll probably want to have a look at how DataSet infers table structure from XML. 您可能希望了解DataSet如何从XML 推断表结构 Looks to me like you'll just need to: 在我看来,你只需要:

  • delete the column definitions (those are what are inferred), 删除列定义(那些是推断的),
  • rename your DataTable element to the actual name of the table, and 将您的DataTable元素重命名为表的实际名称,以及
  • make Row a child element of the new table element. 使Row成为新表元素的子元素。

For example, something like this ought to work: 例如,像这样的东西应该工作:

<DataSet>
 <Estrutura>
   <Row ORDEM="4" NOME="DUnit Pré-Libor6M" NIVEL="3" .../>
   <Row ORDEM="3" NOME="DUnit CDI-Libor6M" NIVEL="3" .../>
   ...

Using an XSL transform to reach this state is a pretty basic use of XSL and shouldn't be too hard with the intros to XSL around the web. 使用XSL转换来达到这种状态是XSL的一个非常基本的用途,并且对于围绕Web的XSL介绍不应该太难。 I suggest you give it a try and post a new question here on SO when you run into specific XSL problems. 我建议你尝试一下,当你遇到特定的XSL问题时,在这里发布一个新的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM