Udostępnij za pośrednictwem


XML Literals Tips/Tricks

A couple quick tips here when using XML literals in your Visual Basic programs.

#1: I've started using XML literals everywhere I had been using multiline strings and text merging (as I explained in this post). For instance, I started using them in my ToString methods of my classes:

Public Overrides Function ToString() As String

    Return <string>

ID : <%= Me.ID %>

Name : <%= Me.LastName %>, <%= Me.FirstName %>

Address : <%= Me.Address %>

         : <%= Me.City %>, <%= Me.State %> - <%= Me.Zip %>

    </string>.Value

End Function

#2: It's also sometimes handy to pass an XElement as a parameter if you need dynamic parameters, or were using your own custom parameter objects previously:

Dim id = 1

Dim name = "Beth"

DoIt(<param>

         <customer>

             <id><%= id %></id>

             <name><%= name %></name>

  </customer>

     </param>)

Private Sub DoIt(ByVal param As XElement)

    Dim customers = From customer In param...<customer> _

            Select New Customer With _

            {.ID = customer.<id>.Value, _

             .FirstName = customer.<name>.Value}

    For Each c In customers

        Console.WriteLine(c.ToString())

    Next

End Sub

Enjoy,
-B

Comments

  • Anonymous
    October 26, 2007
    Beth, Cool tips - I had just linked to your earlier post and that fast you've got a second post on the same topic.

  • Anonymous
    October 26, 2007
    Glad you like them!

  • Anonymous
    October 28, 2007
    Visual Basic 3 to Visual Basic 6 had many lessons to teach us. We did not as an industry learn these

  • Anonymous
    October 28, 2007
    Wow! Thank you for that tip Beth, it's a really nice little feature in 9.0, I can't wait to the final release to use it in production! And I also want to say at this point that you are doing a great job! Keep up the good work :-)

  • Anonymous
    October 29, 2007
    Thanks I am quite interested in these types of posts.  Hope your busy weekend went well. Got a question, so what returns from the ToString method exactly?  Are those colons included?  Does it actually return an object with those properties rather than a string?  I just can't picture what gets returned there. Thanks!  Hope you can continue to feed us very helpful examples!

  • Anonymous
    October 29, 2007
    Hi Josh, Yes the formatted string is returned. i.e.: ID          : 1 Name     : Massi, Beth Address  : 123 Main Street              : Seattle, WA - 98123 I'm eating a lot of XML in VB lately so look for some more tips soon. ;-)

  • Anonymous
    October 29, 2007
    Hey Josh, I just noticed that the previous comment messed up the formatting of the string when I pasted it in :-/. It would be formatted evenly of course. ;-)

  • Anonymous
    November 01, 2007
    We just released a new set of How-Do-I videos in our LINQ series on LINQ to XML in Visual Basic. These

  • Anonymous
    November 02, 2007
    We just released a new set of How-Do-I videos in our LINQ series on LINQ to XML in Visual Basic. These

  • Anonymous
    January 30, 2008
    The comment has been removed

  • Anonymous
    January 30, 2008
    Found a good article about the special character problem: http://www.xml.com/pub/a/2001/01/31/qanda.html

  • Anonymous
    June 16, 2008
    Hi Beth can you help me with this: this is my xml file <CapeQuotes> <paper_cavg Date="13/06/2008"> <Month Name="Jun2008">180052.85</Month> <Month Name="Jul2008">151081.99</Month> <Month Name="Aug2008">147294.52</Month> <Month Name="Sep2008">150905.31</Month> <Month Name="Oct2008">152282.02</Month> <Month Name="Nov2008">148332.85</Month> <Month Name="Dec2008">141662.52</Month> <Month Name="Jan2009">135553.84</Month> <Month Name="Feb2009">131216.96</Month> <Month Name="Mar2009">128094.25</Month> <Month Name="Apr2009">125541.07</Month> <Month Name="May2009">123045.44</Month> <Month Name="Jun2009">120408.50</Month> <Month Name="Jul2009">117480.47</Month> <Month Name="Aug2009">113937.19</Month> <Month Name="Sep2009">110095.17</Month> <Month Name="Oct2009">106025.87</Month> <Month Name="Nov2009">101857.96</Month> <Month Name="Dec2009">97717.91</Month> <Month Name="Jan2010">93790.46</Month> <Month Name="Feb2010">90124.52</Month> <Month Name="Mar2010">86659.83</Month> <Month Name="Apr2010">83279.86</Month> <Month Name="May2010">80105.17</Month> <Month Name="Jun2010">77129.80</Month> <Month Name="Jul2010">74352.18</Month> <Month Name="Aug2010">71726.16</Month> <Month Name="Sep2010">69332.67</Month> <Month Name="Oct2010">67125.57</Month> <Month Name="Nov2010">65099.11</Month> <Month Name="Dec2010">63251.50</Month> <Month Name="Jan2011">61603.07</Month> <Month Name="Feb2011">60135.32</Month> <Month Name="Mar2011">58808.34</Month> <Month Name="Apr2011">57564.34</Month> <Month Name="May2011">56436.15</Month> </paper_cavg> Then this is my xml query in VB but it doesn't work Dim MyQuotes = XDocument.Load("C:WebSite1App_DataCapeQuotes.xml") Dim Quote2 = From quote In MyQuotes...<paper_cavg> _                         Where quote.<paper_cavg>.@Date = "13/06/2008" _                         Select quote Where quote.<paper_cavg>.<Month>.@Name = "Jul2008"            aryOptions(i).NormUl = Quote2.ToString

  • Anonymous
    June 16, 2008
    Of course the xml file has a closing literal as well </CapeQuotes>