Solved

xml in asp.net 1.1  vb.net

Posted on 2007-11-29
5
1,073 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
  • 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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Add a Condition in ASP Repeater 6 34
FInd Image Control Gridview 3 21
LINQ Select all records by MAX data syntax help 1 18
How to filter by key press ? 6 21
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
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.
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…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

860 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