Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XML
|
XML General XML discussions.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XML section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old December 2nd, 2005, 02:08 PM
Authorized User
 
Join Date: Nov 2005
Posts: 17
Thanks: 0
Thanked 0 Times in 0 Posts
Default selecting certain xml elements

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.

Code:
<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?

Code:
Dim XMLDom
Dim ItemID
Dim DbConn
Dim SQLString
Dim ANArticleNode
Dim CollectionOfArticleNodes
Dim cst

Set XMLDom = CreateObject("MSXML2.DomDocument.4.0")
XMLDom.async = False
XMLDom.setProperty "ServerHTTPRequest", True

Set 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 URL
XMLDom.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 Document
Set 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 text
Function EncodeIt(TextString)
    TextString = Replace(CStr(TextString), "''", "'")
    TextString = Replace(TextString, "'", "''")
    EncodeIt = TextString
End Function
Any help would be greatly appreciated as I am seriously stuck with this one.

Thanks folks

J

 
Old December 3rd, 2005, 06:08 AM
joefawcett's Avatar
Wrox Author
 
Join Date: Jun 2003
Posts: 3,074
Thanks: 1
Thanked 38 Times in 37 Posts
Default

If you just want 'Finance' articles change your XPath to:
Code:
Dim sCategory
sCategory = "Finance"
Dim sXPath
sXPath = "InfoStreamResults/Article[Categories/Category = '" & sCategory & "']"
XMLDom.SelectNodes(sXPath)
or, if you want to use the Category ID:
Code:
Dim iCategoryId
iCategoryId = 430009725
Dim sXPath
sXPath = "InfoStreamResults/Article[Categories/Category/@ID = '" & iCategoryId & "']"
XMLDom.SelectNodes(sXPath)

--

Joe (Microsoft MVP - XML)
 
Old December 5th, 2005, 07:33 AM
Authorized User
 
Join Date: Nov 2005
Posts: 17
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Great! thanks man






Similar Threads
Thread Thread Starter Forum Replies Last Post
Selecting Elements at Runtime to Display using XSL pnviv XSLT 1 November 22nd, 2007 05:08 AM
Selecting multiple elements from the source XML mkansal XSLT 15 June 18th, 2007 09:40 AM
help in selecting elements spandit XSLT 1 April 9th, 2007 07:27 PM
Selecting unique set of elements Chamkaur XSLT 1 March 15th, 2007 05:43 AM
Selecting elements up until a certain one Frode XSLT 5 January 19th, 2006 01:22 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.