using System.Collections.Generic;
|
using System.Xml.Linq;
|
|
namespace DPumpHydr.WinFrmUI.WenSkin.Json.Converters
|
{
|
internal class XContainerWrapper : XObjectWrapper
|
{
|
private List<IXmlNode> _childNodes;
|
|
private XContainer Container => (XContainer)base.WrappedNode;
|
|
public override List<IXmlNode> ChildNodes
|
{
|
get
|
{
|
if (_childNodes == null)
|
{
|
_childNodes = new List<IXmlNode>();
|
foreach (XNode item in Container.Nodes())
|
{
|
_childNodes.Add(WrapNode(item));
|
}
|
}
|
return _childNodes;
|
}
|
}
|
|
public override IXmlNode ParentNode
|
{
|
get
|
{
|
if (Container.Parent == null)
|
{
|
return null;
|
}
|
return WrapNode(Container.Parent);
|
}
|
}
|
|
public XContainerWrapper(XContainer container)
|
: base(container)
|
{
|
}
|
|
internal static IXmlNode WrapNode(XObject node)
|
{
|
if (node is XDocument)
|
{
|
return new XDocumentWrapper((XDocument)node);
|
}
|
if (node is XElement)
|
{
|
return new XElementWrapper((XElement)node);
|
}
|
if (node is XContainer)
|
{
|
return new XContainerWrapper((XContainer)node);
|
}
|
if (node is XProcessingInstruction)
|
{
|
return new XProcessingInstructionWrapper((XProcessingInstruction)node);
|
}
|
if (node is XText)
|
{
|
return new XTextWrapper((XText)node);
|
}
|
if (node is XComment)
|
{
|
return new XCommentWrapper((XComment)node);
|
}
|
if (node is XAttribute)
|
{
|
return new XAttributeWrapper((XAttribute)node);
|
}
|
if (node is XDocumentType)
|
{
|
return new XDocumentTypeWrapper((XDocumentType)node);
|
}
|
return new XObjectWrapper(node);
|
}
|
|
public override IXmlNode AppendChild(IXmlNode newChild)
|
{
|
Container.Add(newChild.WrappedNode);
|
_childNodes = null;
|
return newChild;
|
}
|
}
|
}
|