从xml文件搜索数据集 [英] search dataset from xml file
问题描述
我需要过滤我在加载我的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屋!