AssertEquals ("Shallow clones shalt have no children!", false, shallow.HasChildNodes);
}
+ [Test]
+ public void ConstructionAndDefaultAttributes ()
+ {
+ string dtd = "<!DOCTYPE root [<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'def'>]>";
+ string xml = dtd + "<root />";
+// XmlValidatingReader xvr = new XmlValidatingReader (new XmlTextReader (xml, XmlNodeType.Document, null));
+ XmlDocument doc = new XmlDocument ();
+ doc.LoadXml (xml);
+ Console.WriteLine (doc.DocumentElement.Attributes.Count);
+ Console.WriteLine (doc.CreateElement ("root").Attributes.Count);
+ Console.WriteLine (doc.CreateElement ("root2").Attributes.Count);
+ }
+
[Test]
public void CreateElement1 ()
{
AssertEquals ("GetElementsByTagName (string, uri) returned incorrect count.", 1, bookList.Count);
}
+ [Test]
+ public void GetElementsByTagNameNs2 ()
+ {
+ document.LoadXml (@"<root>\r
+ <x:a xmlns:x='urn:foo' id='a'>\r
+ <y:a xmlns:y='urn:foo' id='b'/>\r
+ <x:a id='c' />\r
+ <z id='d' />\r
+ text node\r
+ <?a processing instruction ?>\r
+ <x:w id='e'/>\r
+ </x:a>\r
+ </root>");\r
+ // id='b' has different prefix. Should not caught by (name),\r
+ // while should caught by (name, ns).\r
+ XmlNodeList nl = document.DocumentElement.GetElementsByTagName ("x:a");\r
+ AssertEquals (2, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [1].Attributes ["id"].Value);\r
+
+ nl = document.DocumentElement.GetElementsByTagName ("a", "urn:foo");\r
+ AssertEquals (3, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("b", nl [1].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [2].Attributes ["id"].Value);\r
+
+ // name wildcard
+ nl = document.DocumentElement.GetElementsByTagName ("*");\r
+ AssertEquals (5, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("b", nl [1].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [2].Attributes ["id"].Value);\r
+ AssertEquals ("d", nl [3].Attributes ["id"].Value);\r
+ AssertEquals ("e", nl [4].Attributes ["id"].Value);\r
+
+ // wildcard - local and ns
+ nl = document.DocumentElement.GetElementsByTagName ("*", "*");\r
+ AssertEquals (5, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("b", nl [1].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [2].Attributes ["id"].Value);\r
+ AssertEquals ("d", nl [3].Attributes ["id"].Value);\r
+ AssertEquals ("e", nl [4].Attributes ["id"].Value);\r
+
+ // namespace wildcard - namespace
+ nl = document.DocumentElement.GetElementsByTagName ("*", "urn:foo");\r
+ AssertEquals (4, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("b", nl [1].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [2].Attributes ["id"].Value);\r
+ AssertEquals ("e", nl [3].Attributes ["id"].Value);\r
+
+ // namespace wildcard - local only. I dare say, such usage is not XML-ish!
+ nl = document.DocumentElement.GetElementsByTagName ("a", "*");\r
+ AssertEquals (3, nl.Count);\r
+ AssertEquals ("a", nl [0].Attributes ["id"].Value);\r
+ AssertEquals ("b", nl [1].Attributes ["id"].Value);\r
+ AssertEquals ("c", nl [2].Attributes ["id"].Value);\r
+ }
+
[Test]
public void OuterXmlWithNamespace ()
{
AssertEquals ("attributes not properly removed.", false, xmlElement.HasAttribute ("type"));
}
+ [Test]
+ public void RemoveDoesNotRemoveDefaultAttributes ()
+ {
+ string dtd = "<!DOCTYPE root [<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'def' bar CDATA #IMPLIED>]>";
+ string xml = dtd + "<root bar='baz' />";
+ XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ // RemoveAll
+ AssertNotNull (document.DocumentElement);
+ AssertEquals ("attrCount #01", 2, document.DocumentElement.Attributes.Count);
+ AssertEquals ("baz", document.DocumentElement.GetAttribute ("bar"));
+ AssertEquals ("def", document.DocumentElement.GetAttribute ("foo"));
+ AssertEquals (false, document.DocumentElement.GetAttributeNode ("foo").Specified);
+ document.DocumentElement.RemoveAll ();
+ AssertEquals ("attrCount #02", 1, document.DocumentElement.Attributes.Count);
+ AssertEquals ("def", document.DocumentElement.GetAttribute ("foo"));
+ AssertEquals (String.Empty, document.DocumentElement.GetAttribute ("bar"));
+
+ // RemoveAllAttributes
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAllAttributes ();
+ AssertEquals ("attrCount #03", 1, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttribute(name)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttribute ("foo");
+ AssertEquals ("attrCount #04", 2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttribute(name, ns)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttribute ("foo", String.Empty);
+ AssertEquals ("attrCount #05", 2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeAt
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeAt (1);
+ AssertEquals ("attrCount #06", 2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeNode
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeNode (document.DocumentElement.Attributes [1]);
+ AssertEquals ("attrCount #07", 2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeNode(name, ns)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeNode ("foo", String.Empty);
+ AssertEquals ("attrCount #08", 2, document.DocumentElement.Attributes.Count);
+ }
+
[Test]
public void SetAttributeNode ()
{
AssertEquals ("attribute namespace not properly created.", true, xmlAttribute.NamespaceURI.Equals ("namespace1"));
}
+ [Test]
+ [ExpectedException (typeof (XmlException))]
+ public void SetAttributeNodeError ()
+ {
+ XmlDocument doc = new XmlDocument ();
+ doc.LoadXml ("<root xmlns:x='urn:foo'/>");
+ doc.DocumentElement.SetAttributeNode ("x:lang", "urn:foo");
+ }
+
+ [Test]
+ public void SetAttributeXmlns ()
+ {
+ // should not affect Element node's xmlns
+ XmlElement el = document.CreateElement ("root");
+ el.SetAttribute ("xmlns", "urn:foo");
+ AssertEquals (String.Empty, el.NamespaceURI);
+ }
+
[Test]
public void InnerTextAndEvent ()
{
AssertEquals ("#Namespaced.VerifyPreviousCleared", "hoge", el.FirstChild.Name);
}
+ [Test]
+ public void InnerXmlSetter2 ()
+ {
+ // See bug #63574
+ XmlDocument doc = new XmlDocument ();
+ doc.LoadXml (@"<type>QPair<QString,int>::
+<ref refid='classQPair'>QPair</ref>
+<
+<ref refid='classQString'>QString</ref>
+,int>
+</type>");
+ XmlElement typeNode = doc.DocumentElement;
+ typeNode.InnerText = "QPair<QString, int>";
+ AssertEquals ("QPair<QString, int>", typeNode.InnerText);
+ }
+
[Test]
public void IsEmpty ()
{
AssertEquals ("<RetrievalElement URI=\"\" xmlns=\"http://www.w3.org/2000/09/xmldsig#\" />", sw.ToString());
}
+ [Test]
+ public void WriteToMakesNonsenseForDefaultNSChildren ()
+ {
+ XmlDocument d = new XmlDocument ();\r
+ XmlElement x = d.CreateElement ("root");\r
+ d.AppendChild (x);\r
+ XmlElement a = d.CreateElement ("a");\r
+ XmlElement b = d.CreateElement ("b");\r
+ b.SetAttribute ("xmlns","probe");\r
+ x.AppendChild (a);\r
+ x.AppendChild (b);\r
+ XmlElement b2 = d.CreateElement ("p2", "b2", "");\r
+ b.AppendChild (b2);\r
+ AssertEquals ("<root><a /><b xmlns=\"probe\"><b2 /></b></root>", d.OuterXml);\r
+ }
+
[Test]
public void WriteToWithDeletedNamespacePrefix ()
{