Solved

xml in asp.net 1.1  vb.net

Posted on 2007-11-29
5
1,076 Views
Last Modified: 2010-04-21
Greetings,

I am trying to build an xml document from a datatable passed into it. I am making the function generic enough that it doesn't need to know the structure of the datatable or its field name and just return to me an xml string.

The variable is just my debugging variable, so it can be removed

 Public Function BuildXmlDoc(ByVal dtRecords As DataTable, ByRef strErrMsg As String) As String 'System.xml.XmlDocument
        'Local variables
        Dim xmldDoc As New System.xml.XmlDocument
        Dim xmleData As System.xml.XmlElement

        Dim drRow As DataRow
        Dim dcCol As DataColumn
        Dim arlFieldNames As New ArrayList
        Dim strFieldName As String = String.Empty
        Dim strXml As String
        'Build the xml string
        Try
            'Populate the field array list
            For Each dcCol In dtRecords.Columns
                arlFieldNames.Add(dcCol.ColumnName)
            Next
            'Create the xml document, all xml with will have the first tag be <DATA>
            xmleData = xmldDoc.CreateElement("DATA")
            'Now build each of the xml rows
            For Each drRow In dtRecords.Rows
                Dim xmleRow As System.xml.XmlElement
                strXml &= "dr<br>"
                'Set default values
                xmleRow = xmldDoc.CreateElement("xmlRow")
                strFieldName = String.Empty
                'Traverse through the field list and build the xml string
                For Each strFieldName In arlFieldNames
                    With xmleRow
                        .SetAttribute(strFieldName, drRow(strFieldName))
                    End With

                    strXml &= strFieldName & drRow(strFieldName) & "<br>"
                Next
                strXml &= "xmlerow" & xmleRow.InnerXml.ToString & xmleRow.InnerText.ToString & "<br>"
                'Add the row to the data element
                xmleData.AppendChild(xmleRow)
            Next
            'Add the data to xml document
            xmldDoc.AppendChild(xmleData)
        Catch ex As Exception
            strErrMsg = "cDataAccess.BuildXmlDoc: " & ex.Message & "<br />" & ex.StackTrace
        Finally
            'Clean up
            xmleData = Nothing
            arlFieldNames = Nothing
            dtRecords = Nothing
            dcCol = Nothing
            drRow = Nothing
        End Try
        'Return the value of the function
        Return "JRDxml " & strXml & "<br>" & xmldDoc.InnerText.ToString
    End Function

There is nothing coming back from here, and the variable xmleRow seems to have no data, and I am not sure why this is the case, because the datatable does get into it and no other errors are generated on the page. I copied this from another project that I had worked on before in my old work place, so I know it did work, just not sure why it doesn't work now.

Any help would be appreciated. Thanks.

JD
0
Comment
Question by:JDEE8297
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
5 Comments
 
LVL 37

Accepted Solution

by:
samtran0331 earned 125 total points
ID: 20376213
Is this SQL Server?
It kind of looks like what you're trying to do can be accomplished with SQL's "FOR XML"

...like (using Northwind):
SELECT * FROM Customers FOR XML AUTO

http://www.extremeexperts.com/SQL/Articles/ForXML.aspx
0
 

Author Comment

by:JDEE8297
ID: 20376393
true, it could be done in sql server.

However, what I am planning to do is to take the contents of a datatable and passed into a stored procedure via xml string, and then inside the stored procedure traverse through the xml data and update the respective table(s) without having to call the same stored procedure over and over.

0
 

Author Comment

by:JDEE8297
ID: 20379482
figured it out, I was calling the wrong property on the xmldocument variable, instead of innertext or innerxml, I should have called outerxml.

Probably would have found it sooner, but working on a page that does not user code behind, so it makes it kind cumbersome to debug. Otherwise, problem solved. Thanks for your help
0
 

Author Closing Comment

by:JDEE8297
ID: 31411741
I am going to accept this. Gave me an idea on how to redo this. Thanks again.
0
 

Author Comment

by:JDEE8297
ID: 20383692
samtran0331 thanks again, even though I figured out the error, your solution gave me another idea that I will try out on my app. Thanks again.
0

Featured Post

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

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

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…

696 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