private void WriteElementNode(XmlDictionaryReader reader, bool defattr)
{
XmlDictionaryString str;
XmlDictionaryString str2;
if (reader.TryGetLocalNameAsDictionaryString(out str) && reader.TryGetNamespaceUriAsDictionaryString(out str2))
{
this.WriteStartElement(reader.Prefix, str, str2);
}
else
{
this.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
}
if ((defattr || (!reader.IsDefault && ((reader.SchemaInfo == null) || !reader.SchemaInfo.IsDefault))) && reader.MoveToFirstAttribute())
{
do
{
if (reader.TryGetLocalNameAsDictionaryString(out str) && reader.TryGetNamespaceUriAsDictionaryString(out str2))
{
this.WriteStartAttribute(reader.Prefix, str, str2);
}
else
{
this.WriteStartAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI);
}
while (reader.ReadAttributeValue())
{
if (reader.NodeType == XmlNodeType.EntityReference)
{
this.WriteEntityRef(reader.Name);
}
else
{
this.WriteTextNode(reader, true);
}
}
this.WriteEndAttribute();
}while (reader.MoveToNextAttribute());
reader.MoveToElement();
}
if (reader.IsEmptyElement)
{
this.WriteEndElement();
}
}