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?

[Webinar] Streamline your web hosting managementRegister Today

x
 
ad5qaConnect With a Mentor Commented:
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
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
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
All Courses

From novice to tech pro — start learning today.