J
Jesper Stocholm
I have a database class that maintains data about customers i my system.
The basic XML for this looks like:
<Chunk>
<Vendor>
<Database/>
</Vendor>
</Chunk>
When a user is to be registrered in the system, XML like this is created
in a seperate XML-class (Xml):
<User>
<UserName>stocholm</UserName>
<NumberOfItemsBought>0</NumberOfItemsBought>
<SignOfLastImage>A31A20AB338B6F2FD772ECFA0</SignOfLastImage>
<n>DB1A46496C83DFFC0CA2BA91585AA25E90195B77DB5997DA3D</n>
<e>AAB7E2A0F</e>
</User>
This piece of XML should be appended as a child of the element "User"
such that the XML will look like this:
<Chunk>
<Vendor>
<Database>
<User>
<UserName>stocholm</UserName>
<NumberOfItemsBought>0</NumberOfItemsBought>
<SignOfLastImage>A31A20AB338B6F2FE</SignOfLastImage>
<n>B1A46496C83DFFC0CA2BA91585AA25E90195B77DB5997</n>
<e>AAB7E2A0F</e>
</User>
</Database>
</Vendor>
</Chunk>
But how do I insert the new piece of XML via DOM? My base xml is loaded
in an XmlDocument object, and the new XML is created like this in my Xml
class:
public static XmlNode CreateXmlForDatabase(
string userName,string n,string e,string signOfLastImage
)
{
XmlDocument xDoc = new XmlDocument();
XmlNode node = xDoc.CreateNode(XmlNodeType.Element,"User",null);
XmlElement elem = xDoc.CreateElement(null,"UserName",null);
elem.InnerText = userName;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"NumberOfItemsBought",null);
elem.InnerText = "0";
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"SignOfLastImage",null);
elem.InnerText = signOfLastImage;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"n",null);
elem.InnerText = n;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"e",null);
elem.InnerText = e;
node.AppendChild(elem);
return node;
}
If I try with this in my database class:
XmlNode node = Xml.CreateXmlForDatabase(username,n,e,SignOfLastImage);
XmlNode newUser = _xDoc.SelectSingleNode("/Chunk/Vendor/Database");
newUser.AppendChild(node);
I get the error
"The node to be inserted is from a different document context."
Why is that?
The base XML in my database class is initialized as
static XmlDocument _xDoc = new XmlDocument();
_xDoc.LoadXml("<Chunk><Vendor><Database/></Vendor></Chunk>");
I hope you can help me out on this one,
Thanks, )
The basic XML for this looks like:
<Chunk>
<Vendor>
<Database/>
</Vendor>
</Chunk>
When a user is to be registrered in the system, XML like this is created
in a seperate XML-class (Xml):
<User>
<UserName>stocholm</UserName>
<NumberOfItemsBought>0</NumberOfItemsBought>
<SignOfLastImage>A31A20AB338B6F2FD772ECFA0</SignOfLastImage>
<n>DB1A46496C83DFFC0CA2BA91585AA25E90195B77DB5997DA3D</n>
<e>AAB7E2A0F</e>
</User>
This piece of XML should be appended as a child of the element "User"
such that the XML will look like this:
<Chunk>
<Vendor>
<Database>
<User>
<UserName>stocholm</UserName>
<NumberOfItemsBought>0</NumberOfItemsBought>
<SignOfLastImage>A31A20AB338B6F2FE</SignOfLastImage>
<n>B1A46496C83DFFC0CA2BA91585AA25E90195B77DB5997</n>
<e>AAB7E2A0F</e>
</User>
</Database>
</Vendor>
</Chunk>
But how do I insert the new piece of XML via DOM? My base xml is loaded
in an XmlDocument object, and the new XML is created like this in my Xml
class:
public static XmlNode CreateXmlForDatabase(
string userName,string n,string e,string signOfLastImage
)
{
XmlDocument xDoc = new XmlDocument();
XmlNode node = xDoc.CreateNode(XmlNodeType.Element,"User",null);
XmlElement elem = xDoc.CreateElement(null,"UserName",null);
elem.InnerText = userName;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"NumberOfItemsBought",null);
elem.InnerText = "0";
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"SignOfLastImage",null);
elem.InnerText = signOfLastImage;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"n",null);
elem.InnerText = n;
node.AppendChild(elem);
elem = xDoc.CreateElement(null,"e",null);
elem.InnerText = e;
node.AppendChild(elem);
return node;
}
If I try with this in my database class:
XmlNode node = Xml.CreateXmlForDatabase(username,n,e,SignOfLastImage);
XmlNode newUser = _xDoc.SelectSingleNode("/Chunk/Vendor/Database");
newUser.AppendChild(node);
I get the error
"The node to be inserted is from a different document context."
Why is that?
The base XML in my database class is initialized as
static XmlDocument _xDoc = new XmlDocument();
_xDoc.LoadXml("<Chunk><Vendor><Database/></Vendor></Chunk>");
I hope you can help me out on this one,
Thanks, )