如何使用 C# 通过 XSL 将 XML 加载到数据集中

发布于 2024-12-07 04:42:55 字数 2870 浏览 1 评论 0原文

我正在尝试加载一个包含元数据的 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>

嗯,怎么可能看到,它看起来像一个数据集结构,但我没有让它工作。我认为方法是尝试 xls,但是,我怎样才能制作一个 xls 来将此 xml 代码转换为可由数据集识别的 xml 格式。 换句话说,如何制作此 XSL 并将其与 XML 一起加载以便 DataSet 可以识别?

谢谢。

I'm trying to load a xml which contains metadata, for example:

<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.
In other words, how can I make this XSL and load it together with XML to be recognizable by the DataSet?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与风相奔跑 2024-12-14 04:42:55

您可能想了解一下 DataSet 从 XML 推断表结构。在我看来,您只需要:

  • 删除列定义(这些是推断的),
  • 将您的 DataTable 元素重命名为表的实际名称,然后
  • 创建 Row 新表元素的子元素。

例如,类似这样的事情应该可以工作:

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

使用 XSL 转换来达到此状态是 XSL 的基本用法,并且使用 网络上的 XSL 介绍。我建议您尝试一下,当您遇到特定的 XSL 问题时,请在此处发布一个新问题。

You'll probably want to have a look at how DataSet infers table structure from 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
  • make Row a child element of the new table element.

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. I suggest you give it a try and post a new question here on SO when you run into specific XSL problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文