Filter xml file

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
LVL 1
JoeBo747Asked:
Who is Participating?
 
ad5qaCommented:
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
 
Bob LearnedCommented:
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
 
JoeBo747Author Commented:
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
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
Bob LearnedCommented:
Are you talking about version 3.5, and LINQ?
0
 
JoeBo747Author Commented:
Hi TheLearnedOne,

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

Regards,
JoeBo
0
 
Bob LearnedCommented:
I am sorry, but I can't help you with that, yet.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.