using System;
using System.Collections;
using System.IO;
+using System.Text;
using System.Xml.XPath;
namespace System.Xml
get { return null; }
}
- [MonoTODO]
public virtual string BaseURI
{
- get { throw new NotImplementedException (); }
+ get { return ParentNode.BaseURI; }
}
public virtual XmlNodeList ChildNodes {
[MonoTODO]
public virtual string InnerText {
- get { throw new NotImplementedException (); }
+ get {
+ StringBuilder builder = new StringBuilder ();
+ AppendChildValues (this, builder);
+ return builder.ToString ();
+ }
+
set { throw new NotImplementedException (); }
}
+ private void AppendChildValues(XmlNode parent, StringBuilder builder)
+ {
+ XmlNode node = parent.FirstChild;
+
+ while (node != null) {
+ builder.Append (node.Value);
+ AppendChildValues (node, builder);
+ node = node.NextSibling;
+ }
+ }
+
[MonoTODO("Setter.")]
public virtual string InnerXml {
get {
public abstract string Name { get; }
- [MonoTODO]
public virtual string NamespaceURI {
- get { throw new NotImplementedException (); }
+ get { return String.Empty; }
}
public virtual XmlNode NextSibling {
get { return parentNode; }
}
- [MonoTODO]
public virtual string Prefix {
- get { throw new NotImplementedException (); }
- set { throw new NotImplementedException (); }
+ get { return String.Empty; }
+ set {}
}
public virtual XmlNode PreviousSibling {
public abstract XmlNode CloneNode (bool deep);
[MonoTODO]
- public XPathNavigator CreateNavigator ()
+ public virtual XPathNavigator CreateNavigator ()
{
- throw new NotImplementedException ();
+ return new XmlDocumentNavigator(this);
}
public IEnumerator GetEnumerator ()
throw new NotImplementedException ();
}
- [MonoTODO]
public XmlNodeList SelectNodes (string xpath)
{
- throw new NotImplementedException ();
+ return SelectNodes (xpath, null);
}
[MonoTODO]
public XmlNodeList SelectNodes (string xpath, XmlNamespaceManager nsmgr)
{
- throw new NotImplementedException ();
+ XPathNavigator nav = CreateNavigator ();
+ XPathExpression expr = nav.Compile (xpath);
+ if (nsmgr != null)
+ expr.SetContext (nsmgr);
+ XPathNodeIterator iter = nav.Select (expr);
+ ArrayList rgNodes = new ArrayList ();
+ while (iter.MoveNext ())
+ {
+ rgNodes.Add (((XmlDocumentNavigator) iter.Current).Node);
+ }
+ return new XmlNodeArrayList (rgNodes);
}
- [MonoTODO]
public XmlNode SelectSingleNode (string xpath)
{
- throw new NotImplementedException ();
+ return SelectSingleNode (xpath, null);
}
[MonoTODO]
public XmlNode SelectSingleNode (string xpath, XmlNamespaceManager nsmgr)
{
- throw new NotImplementedException ();
+ XPathNavigator nav = CreateNavigator ();
+ XPathExpression expr = nav.Compile (xpath);
+ if (nsmgr != null)
+ expr.SetContext (nsmgr);
+ XPathNodeIterator iter = nav.Select (expr);
+ if (!iter.MoveNext ())
+ return null;
+ return ((XmlDocumentNavigator) iter.Current).Node;
}
internal void SetParentNode (XmlNode parent)