private static bool IsValidChild(XmlNode parent, XmlNode child) {
switch (parent.NodeType) {
case XmlNodeType.Element:
return true;
case XmlNodeType.DocumentFragment:
switch (child.NodeType) {
case XmlNodeType.Element:
case XmlNodeType.Text:
case XmlNodeType.CDATA:
case XmlNodeType.ProcessingInstruction:
case XmlNodeType.Comment:
case XmlNodeType.Whitespace:
case XmlNodeType.SignificantWhitespace:
return true;
}
break;
case XmlNodeType.Document:
switch (child.NodeType) {
case XmlNodeType.Element:
case XmlNodeType.ProcessingInstruction:
case XmlNodeType.Comment:
return true;
}
break;
default:
break;
}
return false;
}