xml format problem

  • Thread starter Thread starter CindyH
  • Start date Start date
C

CindyH

Hi

I'm using the following code to create xml string:

Dim Doc As New System.Xml.XmlDocument
Dim newAtt As System.Xml.XmlAttribute

Dim dec As System.Xml.XmlDeclaration
dec = Doc.CreateXmlDeclaration("1.0", Nothing, Nothing)
dec.Encoding = "UTF-8"
Doc.AppendChild(dec)

Dim DocRoot As System.Xml.XmlElement = Doc.CreateElement("userlist")
newAtt = Doc.CreateAttribute("ACTION")
newAtt.Value = vAction
DocRoot.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("VENDORNAME")
newAtt.Value = vVendorName
DocRoot.Attributes.Append(newAtt)
Doc.AppendChild(DocRoot)

Dim amouser As System.Xml.XmlNode = Doc.CreateElement("amouser")
newAtt = Doc.CreateAttribute("AMOAID")
newAtt.Value = vAMOAID
amouser.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("VENDORUSERNAME")
newAtt.Value = vH2UserName
amouser.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("AMOATOKEN")
newAtt.Value = vAMOAToken
amouser.Attributes.Append(newAtt)

DocRoot.AppendChild(amouser)

Dim xmlstring = Doc.OuterXml



The result looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<userlist ACTION="redirectuser" VENDORNAME="H2Digital">
<amouser AMOAID="bb224c2a-fe8a-4c3f-acf4-6c0986b8cf78"
VENDORUSERNAME="(e-mail address removed)"
AMOATOKEN="hx0gH6e8PvswEzaA8oXPoVIY/KvnbP2/" />
</userlist>


I need the result to look like this: with </amouser> instead of />

<?xml version="1.0" encoding="UTF-8"?>
<userlist ACTION="redirectuser" VENDORNAME="H2Digital">
<amouser AMOAID="bb224c2a-fe8a-4c3f-acf4-6c0986b8cf78"
VENDORUSERNAME="(e-mail address removed)"
AMOATOKEN="hx0gH6e8PvswEzaA8oXPoVIY/KvnbP2/" </amouser>
</userlist>

Does anyone know what I'm doing wrong here?
Thanks,
Cindy
 
CindyH said:
Hi

I'm using the following code to create xml string:

Dim Doc As New System.Xml.XmlDocument
Dim newAtt As System.Xml.XmlAttribute

Dim dec As System.Xml.XmlDeclaration
dec = Doc.CreateXmlDeclaration("1.0", Nothing, Nothing)
dec.Encoding = "UTF-8"
Doc.AppendChild(dec)

Dim DocRoot As System.Xml.XmlElement = Doc.CreateElement("userlist")
newAtt = Doc.CreateAttribute("ACTION")
newAtt.Value = vAction
DocRoot.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("VENDORNAME")
newAtt.Value = vVendorName
DocRoot.Attributes.Append(newAtt)
Doc.AppendChild(DocRoot)

Dim amouser As System.Xml.XmlNode = Doc.CreateElement("amouser")
newAtt = Doc.CreateAttribute("AMOAID")
newAtt.Value = vAMOAID
amouser.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("VENDORUSERNAME")
newAtt.Value = vH2UserName
amouser.Attributes.Append(newAtt)

newAtt = Doc.CreateAttribute("AMOATOKEN")
newAtt.Value = vAMOAToken
amouser.Attributes.Append(newAtt)

DocRoot.AppendChild(amouser)

Dim xmlstring = Doc.OuterXml



The result looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<userlist ACTION="redirectuser" VENDORNAME="H2Digital">
<amouser AMOAID="bb224c2a-fe8a-4c3f-acf4-6c0986b8cf78"
VENDORUSERNAME="(e-mail address removed)"
AMOATOKEN="hx0gH6e8PvswEzaA8oXPoVIY/KvnbP2/" />
</userlist>


I need the result to look like this: with </amouser> instead of />

<?xml version="1.0" encoding="UTF-8"?>
<userlist ACTION="redirectuser" VENDORNAME="H2Digital">
<amouser AMOAID="bb224c2a-fe8a-4c3f-acf4-6c0986b8cf78"
VENDORUSERNAME="(e-mail address removed)"
AMOATOKEN="hx0gH6e8PvswEzaA8oXPoVIY/KvnbP2/" </amouser>
</userlist>

Does anyone know what I'm doing wrong here?

Your not doing anything wrong the output is correct. I can't think why you
need to specifically have a closing tag rather than the short form /> but if
you do:-

amouser.InnerText = ""

BTW use import of System.Xml to eliminate the long type names.

Also why not simply use the elements .SetAttribute method to create the
attributes instead of creating them as nodes, code would look a lot simpler
 
CindyH said:
Can you give me an example of how to use the .SetAttribute
in my code?

Hows this :-


Imports System.Xml

....

Dim Doc As New XmlDocument

Dim dec As System.Xml.XmlDeclaration
dec = Doc.CreateXmlDeclaration("1.0", Nothing, Nothing)
dec.Encoding = "UTF-8"
Doc.AppendChild(dec)

Dim DocRoot As XmlElement = Doc.CreateElement("userlist")
Doc.AppendChild(DocRoot)

DocRoot.SetAttribute("ACTION", vAction)
DocRoot.SetAttribute("VENDORNAME", vVendorName)

Dim amouser As XmlElement = Doc.CreateElement("amouser")
DocRoot.AppendChild(amouser)

amouser .SetAttribute("AMOAID", vAMOAID)
amouser .SetAttribute("VENDORUSERNAME", vH2UserName)
amouser .SetAttribute("AMOATOKEN", vAMOAToken)

Dim xmlstring = Doc.OuterXml
 
Back
Top