public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader, ref int maxSizeOfHeaders) { if (reader.AttributeCount == 0) { return emptyArray; } XmlAttributeHolder[] holderArray = new XmlAttributeHolder[reader.AttributeCount]; reader.MoveToFirstAttribute(); for (int i = 0; i < holderArray.Length; i++) { string namespaceURI = reader.NamespaceURI; string localName = reader.LocalName; string prefix = reader.Prefix; string s = string.Empty; while (reader.ReadAttributeValue()) { if (s.Length == 0) { s = reader.Value; } else { s = s + reader.Value; } } Deduct(prefix, ref maxSizeOfHeaders); Deduct(localName, ref maxSizeOfHeaders); Deduct(namespaceURI, ref maxSizeOfHeaders); Deduct(s, ref maxSizeOfHeaders); holderArray[i] = new XmlAttributeHolder(prefix, localName, namespaceURI, s); reader.MoveToNextAttribute(); } reader.MoveToElement(); return holderArray; }
public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader, ref int maxSizeOfHeaders) { if (reader.AttributeCount == 0) return emptyArray; XmlAttributeHolder[] attributes = new XmlAttributeHolder[reader.AttributeCount]; reader.MoveToFirstAttribute(); for (int i = 0; i < attributes.Length; i++) { string ns = reader.NamespaceURI; string localName = reader.LocalName; string prefix = reader.Prefix; string value = string.Empty; while (reader.ReadAttributeValue()) { if (value.Length == 0) value = reader.Value; else value += reader.Value; } Deduct(prefix, ref maxSizeOfHeaders); Deduct(localName, ref maxSizeOfHeaders); Deduct(ns, ref maxSizeOfHeaders); Deduct(value, ref maxSizeOfHeaders); attributes[i] = new XmlAttributeHolder(prefix, localName, ns, value); reader.MoveToNextAttribute(); } reader.MoveToElement(); return attributes; }
private void WriteElementNode(XmlDictionaryReader reader, bool defattr) { XmlDictionaryString?localName; XmlDictionaryString?namespaceUri; if (reader.TryGetLocalNameAsDictionaryString(out localName) && reader.TryGetNamespaceUriAsDictionaryString(out namespaceUri)) { WriteStartElement(reader.Prefix, localName, namespaceUri); } else { WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); } if (defattr || !reader.IsDefault) { if (reader.MoveToFirstAttribute()) { do { if (reader.TryGetLocalNameAsDictionaryString(out localName) && reader.TryGetNamespaceUriAsDictionaryString(out namespaceUri)) { WriteStartAttribute(reader.Prefix, localName, namespaceUri); } else { WriteStartAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI); } while (reader.ReadAttributeValue()) { if (reader.NodeType == XmlNodeType.EntityReference) { WriteEntityRef(reader.Name); } else { WriteTextNode(reader, true); } } WriteEndAttribute(); }while (reader.MoveToNextAttribute()); reader.MoveToElement(); } } if (reader.IsEmptyElement) { WriteEndElement(); } }
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(); } }
void WriteElementNode(XmlDictionaryReader reader, bool defattr) { XmlDictionaryString localName; XmlDictionaryString namespaceUri; if (reader.TryGetLocalNameAsDictionaryString(out localName) && reader.TryGetNamespaceUriAsDictionaryString(out namespaceUri)) { WriteStartElement(reader.Prefix, localName, namespaceUri); } else { WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); } if (defattr || (!reader.IsDefault && (reader.SchemaInfo == null || !reader.SchemaInfo.IsDefault))) { if (reader.MoveToFirstAttribute()) { do { if (reader.TryGetLocalNameAsDictionaryString(out localName) && reader.TryGetNamespaceUriAsDictionaryString(out namespaceUri)) { WriteStartAttribute(reader.Prefix, localName, namespaceUri); } else { WriteStartAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI); } while (reader.ReadAttributeValue()) { if (reader.NodeType == XmlNodeType.EntityReference) { WriteEntityRef(reader.Name); } else { WriteTextNode(reader, true); } } WriteEndAttribute(); } while (reader.MoveToNextAttribute()); reader.MoveToElement(); } } if (reader.IsEmptyElement) { WriteEndElement(); } }
private static List<System.Xml.XmlNode> ReadOtherAttributes(XmlDictionaryReader reader, XmlDictionaryString ns) { int attributeCount = reader.AttributeCount; if (attributeCount == 0) { return null; } XmlDocument document = new XmlDocument(); List<System.Xml.XmlNode> list = new List<System.Xml.XmlNode>(attributeCount); reader.MoveToFirstAttribute(); do { System.Xml.XmlNode item = document.ReadNode(reader); if ((item == null) || (item.NamespaceURI == ns.Value)) { throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidCoordinationContextException(Microsoft.Transactions.SR.GetString("InvalidCoordinationContext"))); } list.Add(item); } while (reader.MoveToNextAttribute()); reader.MoveToElement(); return list; }
public void MoveToAttributeSimpleDummyRoot () { reader = CreateReader ("1234"); Assert.IsFalse (reader.MoveToFirstAttribute (), "#1"); reader.Read (); // element Assert.IsTrue (reader.MoveToFirstAttribute (), "#2"); Assert.AreEqual ("type", reader.LocalName, "#3"); Assert.AreEqual ("number", reader.Value, "#4"); Assert.IsTrue (reader.ReadAttributeValue (), "#5"); Assert.AreEqual ("number", reader.Value, "#6"); Assert.IsFalse (reader.MoveToNextAttribute (), "#7"); Assert.IsTrue (reader.MoveToFirstAttribute (), "#8"); Assert.IsFalse (reader.MoveToNextAttribute (), "#9"); }
public void MoveToElementSimpleDummyRoot () { reader = CreateReader ("1234"); reader.Read (); // element Assert.IsTrue (reader.MoveToFirstAttribute (), "#1"); Assert.IsTrue (reader.MoveToElement (), "#1-1"); Assert.IsTrue (reader.MoveToFirstAttribute (), "#2"); Assert.IsTrue (reader.ReadAttributeValue (), "#2-1"); Assert.IsTrue (reader.MoveToElement (), "#2-2"); Assert.IsTrue (reader.MoveToFirstAttribute (), "#3"); Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1"); Assert.IsTrue (reader.MoveToElement (), "#3-2"); }
public void MoveToAttributeArray () { reader = CreateReader ("[]"); Assert.IsFalse (reader.MoveToFirstAttribute (), "#1"); reader.Read (); // element Assert.IsTrue (reader.MoveToFirstAttribute (), "#2"); Assert.AreEqual ("type", reader.LocalName, "#3"); Assert.AreEqual ("array", reader.Value, "#4"); Assert.IsTrue (reader.ReadAttributeValue (), "#5"); Assert.AreEqual ("array", reader.Value, "#6"); Assert.IsFalse (reader.MoveToNextAttribute (), "#7"); Assert.IsTrue (reader.MoveToFirstAttribute (), "#8"); Assert.IsFalse (reader.MoveToNextAttribute (), "#9"); }
// hmm... [ExpectedException (typeof (InvalidOperationException))] public void CloseAndMoveToFirstAttribute () { reader = CreateReader ("{}"); reader.Close (); reader.MoveToFirstAttribute (); }
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(); } }
public override bool MoveToFirstAttribute() { return(reader.MoveToFirstAttribute()); }
/// <summary>Structure of a JSON document as a structure useable for lookups</summary> private IEnumerable<KeyValuePair<string, string>> StructureOf(XmlDictionaryReader input) { var path = new List<string>(); do { if (XmlNodeType.Text == input.NodeType) { yield return new KeyValuePair<string, string>(string.Join("\\", path), input.Value); } else if (XmlNodeType.Element == input.NodeType) { var name = input.LocalName; input.MoveToFirstAttribute(); do { if ("item" == input.LocalName) name = input.Value; } while (input.MoveToNextAttribute()); input.MoveToElement(); path.Add(name); } else if (XmlNodeType.EndElement == input.NodeType) { path.RemoveAt(path.Count - 1); } } while (input.Read()); }