Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BuildSubtree()

void System.Xml.XPath.XPathNavigator.BuildSubtree ( XmlReader reader,
XmlWriter writer )
inlinepackageinherited

Definition at line 1899 of file XPathNavigator.cs.

1900 {
1901 string text = "http://www.w3.org/2000/xmlns/";
1902 ReadState readState = reader.ReadState;
1903 if (readState != 0 && readState != ReadState.Interactive)
1904 {
1905 throw new ArgumentException(System.SR.Xml_InvalidOperation, "reader");
1906 }
1907 int num = 0;
1908 if (readState == ReadState.Initial)
1909 {
1910 if (!reader.Read())
1911 {
1912 return;
1913 }
1914 num++;
1915 }
1916 do
1917 {
1918 switch (reader.NodeType)
1919 {
1920 case XmlNodeType.Element:
1921 {
1922 writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
1923 bool isEmptyElement = reader.IsEmptyElement;
1924 while (reader.MoveToNextAttribute())
1925 {
1926 if ((object)reader.NamespaceURI == text)
1927 {
1928 if (reader.Prefix.Length == 0)
1929 {
1930 writer.WriteAttributeString("", "xmlns", text, reader.Value);
1931 }
1932 else
1933 {
1934 writer.WriteAttributeString("xmlns", reader.LocalName, text, reader.Value);
1935 }
1936 }
1937 else
1938 {
1939 writer.WriteStartAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI);
1940 writer.WriteString(reader.Value);
1941 writer.WriteEndAttribute();
1942 }
1943 }
1944 reader.MoveToElement();
1945 if (isEmptyElement)
1946 {
1947 writer.WriteEndElement();
1948 }
1949 else
1950 {
1951 num++;
1952 }
1953 break;
1954 }
1955 case XmlNodeType.EndElement:
1956 writer.WriteFullEndElement();
1957 num--;
1958 break;
1959 case XmlNodeType.Text:
1960 case XmlNodeType.CDATA:
1961 writer.WriteString(reader.Value);
1962 break;
1963 case XmlNodeType.Whitespace:
1964 case XmlNodeType.SignificantWhitespace:
1965 writer.WriteString(reader.Value);
1966 break;
1967 case XmlNodeType.Comment:
1968 writer.WriteComment(reader.Value);
1969 break;
1970 case XmlNodeType.ProcessingInstruction:
1971 writer.WriteProcessingInstruction(reader.LocalName, reader.Value);
1972 break;
1973 case XmlNodeType.EntityReference:
1974 reader.ResolveEntity();
1975 break;
1976 case XmlNodeType.Attribute:
1977 if ((object)reader.NamespaceURI == text)
1978 {
1979 if (reader.Prefix.Length == 0)
1980 {
1981 writer.WriteAttributeString("", "xmlns", text, reader.Value);
1982 }
1983 else
1984 {
1985 writer.WriteAttributeString("xmlns", reader.LocalName, text, reader.Value);
1986 }
1987 }
1988 else
1989 {
1990 writer.WriteStartAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI);
1991 writer.WriteString(reader.Value);
1992 writer.WriteEndAttribute();
1993 }
1994 break;
1995 }
1996 }
1997 while (reader.Read() && num > 0);
1998 }
static string Xml_InvalidOperation
Definition SR.cs:18
Definition SR.cs:7

References System.Xml.ArgumentException, System.Xml.XmlReader.IsEmptyElement, System.Xml.XmlReader.LocalName, System.Xml.XmlReader.MoveToElement(), System.Xml.XmlReader.MoveToNextAttribute(), System.Xml.XmlReader.NamespaceURI, System.Xml.XmlReader.NodeType, System.Xml.XmlReader.Prefix, System.Xml.XmlReader.Read(), System.Xml.XmlReader.ReadState, System.Xml.XmlReader.ResolveEntity(), System.text, System.Xml.XmlReader.Value, System.writer, and System.SR.Xml_InvalidOperation.

Referenced by System.Xml.XPath.XPathNavigator.AppendChild(), System.Xml.XPath.XPathNavigator.InsertAfter(), System.Xml.XPath.XPathNavigator.InsertBefore(), System.Xml.XPath.XPathNavigator.PrependChild(), and System.Xml.XPath.XPathNavigator.ReplaceSelf().