首页 > 解决方案 > 如何编辑从 xml 文件中获取的 SQL 查询

问题描述

我有几个不同模型的 .xml 文件,它们都包含类似于下面的 SQL 查询,我需要在 C# 中运行它们,但由于这个 .xml 文件属于仪表板,我只需要其中的一部分即可如果我的查询是 select a,b,c,d,e,f,g from x

<Dashboard>
    <Title Visible="false" Text="Management Dashboard" />
    <DataSources>
        <SqlDataSource Name="Perfomr" >ComponentName="DataSource1">
            <Connection Name="ConnectionString" FromAppConfig="true" />
            <Query Type="CustomSqlQuery" Name="myquery">
                <Sql>select  a,b,c,d,e,f,g from x</Sql>
            </Query>
            <ConnectionOptions CloseConnection="true" />
        </SqlDataSource>
    </DataSources>
    <Parameters>
        <Parameter Name="SDate" Type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Value="2018-09-01T00:00:00" Description="Start Date" />
        <Parameter Name="EDate" Type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Description="End Date" />
    </Parameters>
    <Items>
        <Chart ComponentName="chartDashboardItem3" Name="2G CSSR" ShowCaption="false" ParentContainer="pageDashboardItem1" DataSource="DataSource1" DataMember="Global_All_Layer_Day">
            <DataItems>
                <Dimension DataMember="date_id" DateTimeGroupInterval="None" DefaultId="DataItem0" />
                <Dimension DataMember="a" DefaultId="DataItem1" />
                <Dimension DataMember="d" DateTimeGroupInterval="None" DefaultId="DataItem4" /> 
                <Dimension DataMember="a" DefaultId="DataItem5" />
                <Measure DataMember="b" DefaultId="DataItem2" />
                <Measure DataMember="c" DefaultId="DataItem6" />
            </DataItems>
 .....

标签: c#sqlasp.netxmldashboard

解决方案


           String filename = "Dashboard.xml";

            XPathDocument document = new XPathDocument(filename);
            XPathNavigator navigator = document.CreateNavigator();
            XPathNodeIterator nodes = navigator.Select("/Dashboard/DataSources/SqlDataSource/Query/Sql");

            while (nodes.MoveNext())
            {
                Console.WriteLine("SQL Query : " + nodes.Current.InnerXml);
            }

推荐阅读