Solved

Filter xml file

Posted on 2008-06-23
8
336 Views
Last Modified: 2013-11-11
Hi Experts,

I have a xml file that is constructed by using a view on an SQL table, the xml file is used to supply mapping co-ordinates,
unfortunately I am unable to filter this view at source. How could I Filter this xml by the Title element
and use this filter to write another xml file with the same elements.



<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:georss="http://www.georss.org/georss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <item>
      <title>XTLM500</title>
      <type>1</type>
      <description>&lt;img src= Images/Small.jpg&gt;&lt;br&gt United Kingdom&lt;br&gt;&lt;strong&gt;Vehicle Type</description>
      <icon>Images/truck-small-picture5.gif</icon>
      <ordnum>YourOrderNum</ordnum>
      <geo:lat>51.6922833333333</geo:lat>
      <geo:long>-1.87274666666667</geo:long>
    </item>
  </channel>
</rss>

Regards,
JoeBo
0
Comment
Question by:JoeBo747
  • 3
  • 2
8 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21849124
I don't quite get the context for the question.   Are you saying that you have a DataSet that is constructed and filled from an XML file, and you want to create a RowFilter for a DataView?
0
 
LVL 1

Author Comment

by:JoeBo747
ID: 21853090
Hi TheLearnedOnei,
Thanks for the reply I have an XML file that plots positions on virtual earth the XML file is created using the a dblm datasource (monitoring)  is created using a view on  sql server 2005. This view has some fixed delimiters but I also wish to further limit the data source using a variable that must be supplied at runtime. The view does not allow this to happen so I need to either find a method that will achieve this or filter the resulting XML file a rebuild an xml file with the required records. Can you suggest a fix? I have reproduced the code that plots the position.

regards,

JoeBo

  Try
            Dim db As New MonitoringDataContext
            Dim geoRSS = _
                 <rss xmlns:georss="http://www.georss.org/georss/">
                     <channel>
                         <%= From Monitoring In db.MonViews _
                             Let desc = "<img src= Images/SmallGBA.jpg" _
                             & "><br>" & Monitoring.Location _
                             & "<br><strong>Vehicle Type" _
                             Select <item>
                                        <title><%= Monitoring.OrdNum %></title>
                                        <type><%= Monitoring.TripType %></type>
                                        <description><%= desc %></description>
                                        <icon><%= Monitoring.VehDescription %></icon>
                                        <ordnum><%= Monitoring.OrdNum %></ordnum>
                                        <geo:lat><%= Monitoring.Latitude %></geo:lat>
                                        <geo:long><%= Monitoring.Longitude %></geo:long>
                                    </item> %>
                     </channel>
                 </rss>
            geoRSS.Save(Server.MapPath("Monitoring.xml"))
            'Me.TextBox1.Text = (geoRSS.ToString)
            'LoadTree()
            If geoRSS...<item>.Count > 0 Then
                Session("georss") = geoRSS
 
                Me.body.Attributes.Add("onload", String.Format("GetMap()"))
            Else
                'Me.lblStatus.Visible = True
                Session("georss") = <rss></rss>
            End If
        Catch ex As Exception
            MsgBox(Err.Description)
        Finally
            If Not Page.IsPostBack Then LoadTree()
        End Try

Open in new window

0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21854094
Are you talking about version 3.5, and LINQ?
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 1

Author Comment

by:JoeBo747
ID: 21856891
Hi TheLearnedOne,

Sorry about the delay I have been out. Yes I am using version 3.5 and LINQ!

Regards,
JoeBo
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21880022
I am sorry, but I can't help you with that, yet.
0
 
LVL 4

Accepted Solution

by:
ad5qa earned 500 total points
ID: 21953852
Try this, I am a begineer at Linq and there may be a better way. With this you can add a where clause also. Add your xml description and whatever before and after and you can stream to a file. Could be your starting point.



 XDocument xmlDoc = XDocument.Load("http://www.georss.org/georss/"); //Replace with URL
        var q = from c in xmlDoc.Descendants("item")
 
                select "<title>" + (string)c.Element("title") + "</title>" +
                       "<type>" + (string)c.Element("type") + "</type>" +
                       "<description>" + (string)c.Element("description") + "</description>" +
                       "<icon>" + (string)c.Element("icon") + "</icon>" +
                       "<ordnum>" + (string)c.Element("ordnum") + "</ordnum>" +
                       "<geo:lat>" + (string)c.Element("geo:lat") + "</geo:lat>" +
                       "<geo:lon>" + (string)c.Element("geo:lon") + "</geo:lon>";
                
        foreach (string name in q)
        {
            Console.WriteLine(name);
        }

Open in new window

0

Featured Post

MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question