tangxu
2024-10-22 4d9fe5ed98ceb6b8fe9dc52ebfb80860ad1aee99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
using DPumpHydr.WinFrmUI.WenSkin.Json.Utilities;
 
namespace DPumpHydr.WinFrmUI.WenSkin.Json.Converters
{
    internal class XDocumentWrapper : XContainerWrapper, IXmlDocument, IXmlNode
    {
        private XDocument Document => (XDocument)base.WrappedNode;
 
        public override List<IXmlNode> ChildNodes
        {
            get
            {
                List<IXmlNode> childNodes = base.ChildNodes;
                if (Document.Declaration != null && childNodes[0].NodeType != XmlNodeType.XmlDeclaration)
                {
                    childNodes.Insert(0, new XDeclarationWrapper(Document.Declaration));
                }
                return childNodes;
            }
        }
 
        public IXmlElement DocumentElement
        {
            get
            {
                if (Document.Root == null)
                {
                    return null;
                }
                return new XElementWrapper(Document.Root);
            }
        }
 
        public XDocumentWrapper(XDocument document)
            : base(document)
        {
        }
 
        public IXmlNode CreateComment(string text)
        {
            return new XObjectWrapper(new XComment(text));
        }
 
        public IXmlNode CreateTextNode(string text)
        {
            return new XObjectWrapper(new XText(text));
        }
 
        public IXmlNode CreateCDataSection(string data)
        {
            return new XObjectWrapper(new XCData(data));
        }
 
        public IXmlNode CreateWhitespace(string text)
        {
            return new XObjectWrapper(new XText(text));
        }
 
        public IXmlNode CreateSignificantWhitespace(string text)
        {
            return new XObjectWrapper(new XText(text));
        }
 
        public IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone)
        {
            return new XDeclarationWrapper(new XDeclaration(version, encoding, standalone));
        }
 
        public IXmlNode CreateXmlDocumentType(string name, string publicId, string systemId, string internalSubset)
        {
            return new XDocumentTypeWrapper(new XDocumentType(name, publicId, systemId, internalSubset));
        }
 
        public IXmlNode CreateProcessingInstruction(string target, string data)
        {
            return new XProcessingInstructionWrapper(new XProcessingInstruction(target, data));
        }
 
        public IXmlElement CreateElement(string elementName)
        {
            return new XElementWrapper(new XElement(elementName));
        }
 
        public IXmlElement CreateElement(string qualifiedName, string namespaceUri)
        {
            return new XElementWrapper(new XElement(XName.Get(MiscellaneousUtils.GetLocalName(qualifiedName), namespaceUri)));
        }
 
        public IXmlNode CreateAttribute(string name, string value)
        {
            return new XAttributeWrapper(new XAttribute(name, value));
        }
 
        public IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value)
        {
            return new XAttributeWrapper(new XAttribute(XName.Get(MiscellaneousUtils.GetLocalName(qualifiedName), namespaceUri), value));
        }
 
        public override IXmlNode AppendChild(IXmlNode newChild)
        {
            XDeclarationWrapper xDeclarationWrapper = newChild as XDeclarationWrapper;
            if (xDeclarationWrapper != null)
            {
                Document.Declaration = xDeclarationWrapper.Declaration;
                return xDeclarationWrapper;
            }
            return base.AppendChild(newChild);
        }
    }
}