private static void WriteTo(DataPointer dp, XmlWriter w)
{
switch (dp.NodeType)
{
case XmlNodeType.Attribute:
if (!dp.IsDefault)
{
w.WriteStartAttribute(dp.Prefix, dp.LocalName, dp.NamespaceURI);
if (dp.MoveToFirstChild())
{
do
{
WriteTo(dp, w);
}
while (dp.MoveToNextSibling());
dp.MoveToParent();
}
w.WriteEndAttribute();
}
break;
case XmlNodeType.Element:
WriteBoundElementTo(dp, w);
break;
case XmlNodeType.Text:
w.WriteString(dp.Value);
break;
default:
Debug.Assert(((IXmlDataVirtualNode)dp).IsOnColumn(null));
if (dp.GetNode() != null)
{
dp.GetNode().WriteTo(w);
}
break;
}
}