Jump to content

Selecting certain XML elements


fogofogo

Recommended Posts

Hello All,I have a question regarding searching and selecting certain elements in an XML document using asp. The xml script basically consist of news headings, contents, date, and category elements that tell what the news is related to and where it should be displayed and stored. For example Finance catagory stories will be stored in a different database to the business one.

<Article Created="16:01:59" ID="15105602">  	<Heading>Equitable drops claim against former directors</Heading>   	<Date>02/12/2005</Date>   <Contents>  	<news story goes in here>   	</Contents>  <Categories>    <Category ID="430009725">Finance</Category>   	<Category ID="430009734">Economy</Category>   	<Category ID="430009735">Business</Category>     <Category ID="438000159">Insurance</Category>   </Categories></Article>

So basically I need a script that can check the XML for certain stories and store them in a database. I already have the script (see below) that takes ALL the news stories from the XML file and puts them in a database. So how can I get the script to check if a story is, say a Finance story and continue to store it in a database? Would I use an if else statment? if so, where should I put it?

Dim XMLDomDim ItemIDDim DbConnDim SQLStringDim ANArticleNodeDim CollectionOfArticleNodesDim cstSet XMLDom = CreateObject("MSXML2.DomDocument.4.0")XMLDom.async = FalseXMLDom.setProperty "ServerHTTPRequest", TrueSet DbConn = Createobject("adodb.connection")'DbConn.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=pokernewsxml; OPTION=3"DbConn.open "Driver={MySQL ODBC 3.51 Driver};" & _         "Server=82.195.128.88;" & _         "Database=johnfog_xml;" & _         "Uid=johnfog_xml;" & _         "Pwd=wordword;"'-- Load the XML data from your live URLXMLDom.Load("http://feeds.directnews.org.uk/?ad96035d-f9fe-4a3f-a5b2-ad546b2ed850") '-- Create a reference to a collection of all Article Tags within the downloaded XML DocumentSet CollectionOfArticleNodes = XMLDom.SelectNodes("InfoStreamResults/Article")'-- Iterate the collection of Article Tags For Each ANArticleNode in CollectionOfArticleNodes 	ItemID = ANArticleNode.SelectSingleNode("@ID").text	Heading = ANArticleNode.SelectSingleNode("Heading").text		Contents = ANArticleNode.SelectSingleNode("Contents").text	sDate = ANArticleNode.SelectSingleNode("Date").text	'-- Delete the item from the local database if it exists	SQLString = "DELETE FROM DeHavillandNews WHERE trim(ItemID)='" & trim(ItemID) & "';"    DbConn.Execute(SQLString)		'-- Insert the item into the local database	SQLString = "INSERT INTO DeHavillandNews (ItemID,Heading,Contents,strDate) " _    & "VALUES('" & ItemID & "','" & EncodeIt(Heading) & "','" & EncodeIt(Contents) & "', '" & sDate & "');" 	DbConn.Execute(SQLString)		Next'-- Handles quotations in textFunction EncodeIt(TextString)	TextString = Replace(CStr(TextString), "''", "'")	TextString = Replace(TextString, "'", "''")	EncodeIt = TextStringEnd Function

Any help would be greatly appreciated as I am seriously stuck with this one.Thanks folksJ(changed display to code box to save room - skemcin)

Edited by Skemcin
Link to comment
Share on other sites

problem solved :) If anyone is interested, here is the solution:

Dim XMLDomDim ItemIDDim DbConnDim SQLStringDim ANArticleNodeDim ANArticleNode2Dim CollectionOfArticleNodesDim CollectionOfArticleNodes2Dim cstSet XMLDom = CreateObject("MSXML2.DomDocument.4.0")XMLDom.async = FalseXMLDom.setProperty "ServerHTTPRequest", TrueSet DbConn = Createobject("adodb.connection")DbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=test1.mdb"'-- Load the XML data from your live URLXMLDom.Load("http://feeds.directnews.org.uk/?ad96035d-f9fe-4a3f-a5b2-ad546b2ed850") '-- Create a reference to a collection of all Article Tags within the downloaded XML DocumentSet CollectionOfArticleNodes = XMLDom.SelectNodes("InfoStreamResults/Article")'-- Iterate the collection of Article Tags For Each ANArticleNode in CollectionOfArticleNodes 	'-- Now create a reference to the category tag	Set CollectionOfArticleNodes2 = ANArticleNode.SelectNodes("Categories/Category")	'-- And iterate through the nodes to test for a match	For Each ANArticleNode2 in CollectionOfArticleNodes2  ItemID = ANArticleNode2.SelectSingleNode("@ID").text  if ItemID = "430009735" then 	 '-- Retrieve the value of the heading node from the current article 	 Heading = ANArticleNode.SelectSingleNode("Heading").text	 	 '-- Insert the item into the local database 	 SQLString = "INSERT INTO test (Heading) " _ 	 & "VALUES('" & EncodeIt(Heading) & "');"  	 DbConn.Execute(SQLString)	  end if	Next '-- check the next category IDNext '-- move to the next article'-- Handles quotations in textFunction EncodeIt(TextString)	TextString = Replace(CStr(TextString), "''", "'")	TextString = Replace(TextString, "'", "''")	EncodeIt = TextStringEnd Function%>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...