从xml文件搜索数据集 [英] search dataset from xml file

查看:185
本文介绍了从xml文件搜索数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要过滤我在加载我的xml文件时获得的结果。例如,我需要搜索关于化学的项目的xml数据。以下xml示例是我的xml文件的摘要。数据被加载到gridview中。你可以帮忙吗?谢谢!

I need to filter the results I obtain when I load my xml file. For example I need to search the xml data for items with keyword "Chemistry" for example. The below xml example is a summary of my xml file. The data is loaded in a gridview. Could you help? Thanks!

Xml文件(摘要):

Xml File (summary):

< CONTRACTS>
< CONTRACT>
< CONTRACTID> 779< / CONTRACTID>
< NAME> ContractName< / NAME>
< KEYWORDS>化学,工程,化学< / KEYWORDS> ;
< CONTRACTSTARTDATE> 1/8/2005< / CONTRACTSTARTDATE>
CONTRACTENDDATE> 31/7/2008< / CONTRACTENDDATE>
< COMMODITIES>< COMMODITY>< COMMODITYCODE> CHEM< / COMMODITYCODE>
< COMMODITYNAME>化学品< / COMMODITYNAME>< / COMMODITY>< / COMMODITIES>
/ CONTRACT>< / CONTRACTS>

<CONTRACTS> <CONTRACT> <CONTRACTID>779</CONTRACTID> <NAME>ContractName</NAME> <KEYWORDS>Chemistry, Engineering, Chemical</KEYWORDS> <CONTRACTSTARTDATE>1/8/2005</CONTRACTSTARTDATE> <CONTRACTENDDATE>31/7/2008</CONTRACTENDDATE> <COMMODITIES><COMMODITY><COMMODITYCODE>CHEM</COMMODITYCODE> <COMMODITYNAME>Chemicals</COMMODITYNAME></COMMODITY></COMMODITIES> </CONTRACT></CONTRACTS>

我的代码代码是:

受保护的Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs)处理Me.Load

    Dim ds As DataSet = New DataSet()

    ds.ReadXml(AppDomain.CurrentDomain.BaseDirectory + "/testxml.xml")

    Dim dtContract As DataTable = ds.Tables(0)
    Dim dtJoinCommodities As DataTable = ds.Tables(1)
    Dim dtCommodity As DataTable = ds.Tables(2)
    dtContract.Columns.Add("COMMODITYCODE")
    dtContract.Columns.Add("COMMODITYNAME")

    Dim count As Integer = 0
    Dim commodityCode As String = Nothing
    Dim commodityName As String = Nothing

    Dim dRowJoinCommodity As DataRow
    Dim trimChar As Char() = {","c, " "c}

    Dim textboxstring As String = "KEYWORDS like 'pencil'"

        For Each dRow As DataRow In dtContract.Select(textboxstring)

        commodityCode = ""
        commodityName = ""

        count = dtContract.Rows.IndexOf(dRow)
        dRowJoinCommodity = dtJoinCommodities.Rows(count)

        For Each dRowCommodities As DataRow In dtCommodity.Rows
            If dRowCommodities("COMMODITIES_Id").ToString() = dRowJoinCommodity("COMMODITIES_ID").ToString() Then

                commodityCode = commodityCode + dRowCommodities("COMMODITYCODE").ToString() + ", "

                commodityName = commodityName + dRowCommodities("COMMODITYNAME").ToString() + ", "

            End If

        Next

       commodityCode = commodityCode.TrimEnd(trimChar)
        commodityName = commodityName.TrimEnd(trimChar)
        dRow("COMMODITYCODE") = commodityCode
        dRow("COMMODITYNAME") = commodityName

    Next


    GridView1.DataSource = dtContract
    GridView1.DataBind()
End Sub


推荐答案

我必须建议您查看XQuery和在VB中使用它,因为它是为这种场景设计的。首先像大多数语言一样有点吓人,但是它的功能非常强大,并且会使您的工作变得微不足道。

I must suggest that you check out XQuery and how to use it in VB since it's designed for precisely this sort of scenarios. It's a bit intimidating at first like most languages, but it's quite powerful and will make what you're doing trivial.

XQuery是用于描述XML中搜索的语言。 XPath是描述XML中的东西的路径的搜索字符串。您可以通过元素名称,元素值,属性名称/值等轻松查找东西。

XQuery is a language for describing searches in XML. XPath is a search string describing the "path" of stuff in XML. You can easily look up things by element name, element value, attribute name/value etc.

不幸的是,我不知道Visual Basic,并没有使用它,因为我是大约16岁,所以我不能帮助你,不好意思。但是你永远不会后悔学习如何使用XQuery。它真的带来了XML的真正力量。

Unfortunately I don't know Visual Basic and haven't used it since I was about 16 so I can't help you more than that, sorry. But you will never regret learning how to use XQuery. It really brings out the true power of XML.

对于什么是值得的(诚然,在你明白如何在VB中使用XQuery之前,这不是很多),这里有一些例子您可以如何配置XPath搜索:

For what it's worth (admittedly not a lot until you figure out how to use XQuery in VB), here are some examples of what you can do to configure XPath searches:

http://wxww.w3schools.com/xpath/xpath_functions.asp

再次,不要被它吓倒,只是找到一些基本的XQuery教程VB,您可以随时了解它。 :)

Again, don't be intimidated by it, just find some basic XQuery tutorials for VB and you'll figure it out in no time. :)

这篇关于从xml文件搜索数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆