如果可能的话,将XML转换为Gridview

本文关键字:XML 转换 Gridview 如果 | 更新日期: 2023-09-27 18:01:45

一天好,我要尝试尽可能简短但信息丰富,我使用asp.net 3.5和c#,基本上我要做的是从我从HTTPRequest收到的xml文件收集信息。但是使用通常的数据集。Readxml不适合我。在发表任何答案之前,请花一分钟浏览一下所有内容。

我收到的xml看起来像这样:(我已经删除了一些信息,但很高兴提供我收到的完整xml集,因为我正试图不将此垃圾信息垃圾)

    <SEGMENTS>
<SEGMENT NAME="webcluster">
    <RESULTPAGE>
        <QUERYTRANSFORMS>
            <QUERYTRANSFORM NAME="Original query" ACTION="NOP" QUERY="printers" CUSTOM="" MESSAGE="Original query" MESSAGEID="1"/>
            <QUERYTRANSFORM NAME="FastQT_Lemmatizer" ACTION="nop" QUERY="" CUSTOM="No change to query" MESSAGE="Lemmatization turned off for current query" MESSAGEID="16" INSTANCE="lemmatizer"/>
            <QUERYTRANSFORM NAME="Final query" ACTION="NOP" QUERY="string("printers")" CUSTOM="FQL" MESSAGE="Final query" MESSAGEID="1"/>
        </QUERYTRANSFORMS>
        <NAVIGATION ENTRIES="0">
        </NAVIGATION>
        <CLUSTERS/>
        <RESULTSET FIRSTHIT="1" LASTHIT="1" HITS="1" TOTALHITS="1121" MAXRANK="6610" TIME="0.0000">
            <HIT NO="1" RANK="6610" SITEID="0" MOREHITS="0" FCOCOUNT="0">
                <FIELD NAME="body"/>
                <FIELD NAME="customerid">36547986</FIELD>
                <FIELD NAME="name">Yahunn Digital <key>Printers</key></FIELD>
                <FIELD NAME="itemcode">DTRJ</FIELD>
                <FIELD NAME="bookcode">155512</FIELD>
                <FIELD NAME="heading">BANNERS</FIELD>
                <FIELD NAME="link2">15530694.GIF</FIELD>
            </HIT>
        </RESULTSET>
        <PAGENAVIGATION>
            <NEXTPAGE FIRSTHIT="2" LASTHIT="2" URL="/cgi-bin/xml-search?query=printers&hits=1&offset=1"/>
        </PAGENAVIGATION>
    </RESULTPAGE>
</SEGMENT>

我尝试用下面的命令读取它:

    HttpWebRequest request = WebRequest.Create(builder.Uri) as HttpWebRequest;
        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
        {
            // Get the response stream  
            StreamReader readerSR = new StreamReader(response.GetResponseStream());
            // Console application output  
            //lblReturn.Text = readerSR.ReadToEnd().ToString();
            DataSet XMLDataSet = new DataSet();
            XMLDataSet.ReadXml(readerSR);
            dgvResults.DataSource = XMLDataSet.Tables[9].DefaultView;
            dgvResults.DataBind();
        }; 

但简单的答案是,这并没有返回一组适当的信息来填充gridview。表XMLDataSet.Tables[7]. rows . count . tostring()包含223行,这是完全不正确的,我给出的xml是1个结果(当然我遗漏了为示例返回的216个"字段"),但似乎它正在为每个"字段"创建一行。我的问题是,我将如何获得信息到DataGridView,或者我应该做一些完全不同的东西来显示这个信息?我想使用gridview的原因纯粹是因为我对gridview的自定义感到满意。

如果可能的话,将XML转换为Gridview

您有一个错误的XML模式,因此您无法读取XML文件所以你不能加载XML的问题。在渲染到网格视图之前,请尝试修复XML模式

查询= "字符串("打印机")"= =>查询字符串("打印机")"

请注意,'&'会破坏XML并导致渲染错误,因此我使用%26%替换它。

和根标签的结束标签[SEGMENTS]

希望这对你有帮助