public void AttributeWithSessionQNameIndex() { XmlDictionaryString ds; XmlDictionary dic = new XmlDictionary(); XmlBinaryReaderSession ses = new XmlBinaryReaderSession(); ses.Add(0, "SessionLookupValue"); // <d a="QNameIndex(0x18,1)"></d> byte [] bytes = new byte [] { 0x40, 0x01, 0x64, 0x04, 0x01, 0x61, 0xbc, 0x18, 0x01, 0x01 }; XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader( new MemoryStream(bytes), dic, new XmlDictionaryReaderQuotas(), ses); Assert.IsTrue(reader.Read(), "#1"); AssertNode(XmlNodeType.Element, "d", "", "", 0, reader, "#2"); reader.MoveToAttribute(0); if (reader.LocalName != "a") { reader.MoveToAttribute(1); } AssertNode(XmlNodeType.Attribute, "a", "", "y:SessionLookupValue", 1, reader, "#3"); Assert.IsTrue(reader.ReadAttributeValue(), "#4"); AssertNode(XmlNodeType.Text, "a", "", "y:SessionLookupValue", 2, reader, "#5"); reader.MoveToContent(); Assert.IsFalse(reader.ReadAttributeValue(), "#6"); }
public void AttributeXmlns() { // equivalent to WriteXmlnsAttribute() XmlDictionaryString ds; XmlDictionary dic = new XmlDictionary(); dic.Add("xmlns"); dic.Add("http://www.w3.org/2000/xmlns/"); byte [] bytes = new byte [] { // 40 (root) 04 (a) A8 // 09 (foo) (urn:foo) 08 (urn:bar) 0x40, 4, 0x72, 0x6F, 0x6F, 0x74, 0x04, 1, 0x61, 0xA8, 0x09, 3, 0x66, 0x6F, 0x6F, 7, 0x75, 0x72, 0x6E, 0x3A, 0x66, 0x6F, 0x6F, 0x08, 7, 0x75, 0x72, 0x6E, 0x3A, 0x62, 0x61, 0x72, 1 }; Read(bytes); XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(new MemoryStream(bytes), new XmlDictionaryReaderQuotas()); Assert.IsTrue(reader.Read(), "#1-1"); AssertNode(XmlNodeType.Element, "root", "urn:bar", "", 0, reader, "#1"); reader.MoveToAttribute(0); if (reader.LocalName != "a") { reader.MoveToAttribute(1); } AssertNode(XmlNodeType.Attribute, "a", "", "", 1, reader, "#2"); Assert.IsTrue(reader.ReadAttributeValue(), "#3"); AssertNode(XmlNodeType.Text, "a", "", "", 2, reader, "#4"); Assert.IsFalse(reader.ReadAttributeValue(), "#5"); }
public void AttributeWithLocalDictQNameIndex() { XmlDictionary dic = new XmlDictionary(); dic.Add("xmlns"); dic.Add("http://www.w3.org/2000/xmlns/"); dic.Add("DictionaryValue"); dic.Add("SomeDictionaryString"); dic.Add("AdditionalDictionaryString"); // <d a="QNameIndex(0,8)"></d> byte [] bytes = new byte [] { 0x40, 0x01, 0x64, 0x04, 0x01, 0x61, 0xbc, 0x00, 0x08, 0x01 }; XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader( new MemoryStream(bytes), dic, new XmlDictionaryReaderQuotas()); Assert.IsTrue(reader.Read(), "#1"); AssertNode(XmlNodeType.Element, "d", "", "", 0, reader, "#2"); reader.MoveToAttribute(0); if (reader.LocalName != "a") { reader.MoveToAttribute(1); } AssertNode(XmlNodeType.Attribute, "a", "", "a:AdditionalDictionaryString", 1, reader, "#3"); Assert.IsTrue(reader.ReadAttributeValue(), "#4"); AssertNode(XmlNodeType.Text, "a", "", "a:AdditionalDictionaryString", 2, reader, "#5"); Assert.IsFalse(reader.ReadAttributeValue(), "#6"); }
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); }
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 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"); }
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"); }
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(); } }
public override bool ReadAttributeValue() { return(_reader.ReadAttributeValue()); }
protected override byte [] EncodeSecurityState(byte [] src) { foreach (byte b in src) { Console.Write("{0:X02} ", b); } Console.WriteLine(); // this show how it is LAMESPEC. //Array.Reverse (src); XmlDictionary dic = new XmlDictionary(); for (int i = 0; i < 60; i++) { dic.Add("n" + i); } XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); XmlDictionaryReader cr = XmlDictionaryReader.CreateBinaryReader(src, 0, src.Length, dic, quotas); cr.Read(); XmlWriter w = XmlWriter.Create(Console.Out); while (!cr.EOF) { switch (cr.NodeType) { case XmlNodeType.Element: int dummy; w.WriteStartElement(cr.Prefix, cr.LocalName, cr.NamespaceURI); for (int i = 0; i < cr.AttributeCount; i++) { cr.MoveToAttribute(i); w.WriteStartAttribute(cr.Prefix, cr.LocalName, cr.NamespaceURI); bool b64 = cr.LocalName == "n41"; while (cr.ReadAttributeValue()) { if (b64) { foreach (byte b in Convert.FromBase64String(cr.Value)) { w.WriteString(String.Format("{0:X02}-", b)); } } else { w.WriteString(cr.Value); } } w.WriteEndAttribute(); } //w.WriteAttributes (cr, false); cr.MoveToElement(); if (cr.IsEmptyElement) { w.WriteEndElement(); } cr.Read(); break; case XmlNodeType.EndElement: w.WriteEndElement(); cr.Read(); break; default: if (cr.TryGetBase64ContentLength(out dummy)) { foreach (byte b in cr.ReadContentAsBase64()) { w.WriteString(String.Format("{0:X02} ", b)); } } else { w.WriteNode(cr, false); } break; } } w.Close(); return(src); }
void GetCompactSignatureAttributes(out string schemeUri, out string keyId, out string refs, out string sig, out string inclusivePrefixesList) { schemeUri = String.Empty; keyId = String.Empty; refs = String.Empty; sig = String.Empty; inclusivePrefixesList = null; XmlDictionaryReader reader = this.Message.Headers.GetReaderAtHeader(this.headerIndex); // reader.MoveToStartElement(); if (reader.IsEmptyElement) { throw new CompactSignatureSecurityException("Security header doesn't contain a compact signature."); } // Move on d:Sig reader.ReadStartElement(); reader.MoveToStartElement(); while (true) { if (this.IsCompactSignatureElement(reader)) { // The d:Sig element was found break; } // Skip over the children of the current node, // because Sig must be a direct child of the Security header. reader.Skip(); if (this.IsEndSecurityElement(reader)) { // The end element of Security was reached. throw new CompactSignatureSecurityException("The security header doesn't contain a compact signature"); } } bool schemeFound = false; bool keyIdFound = false; bool refsFound = false; bool sigFound = false; bool inclusivePrefixesFound = false; int attributeCount = reader.AttributeCount; if (attributeCount != 0) { reader.MoveToFirstAttribute(); for (int i = 0; i < attributeCount; i++) { string attribLocalName = reader.LocalName; string value = string.Empty; while (reader.ReadAttributeValue()) { if (value.Length == 0) { value = reader.Value; } else { value += reader.Value; } } if (!schemeFound && String.Compare(attribLocalName, ProtocolStrings.CompactSignatureSchemeAttribute, true) == 0) { // Scheme schemeUri = value; schemeFound = true; } else if (!keyIdFound && String.Compare(attribLocalName, ProtocolStrings.CompactSignatureKeyIdAttribute, true) == 0) { // KeyId keyId = value; keyIdFound = true; } else if (!refsFound && String.Compare(attribLocalName, ProtocolStrings.CompactSignatureRefsAttribute, true) == 0) { // Refs refs = value; refsFound = true; } else if (!sigFound && String.Compare(attribLocalName, ProtocolStrings.CompactSignatureElementName, true) == 0) { // Sig sig = value; sigFound = true; } else if (!inclusivePrefixesFound && String.Compare(attribLocalName, ProtocolStrings.PrefixListAttribute, true) == 0) { // PrefixList inclusivePrefixesList = value; inclusivePrefixesFound = true; } reader.MoveToNextAttribute(); } } reader.Close(); }