地味にいろんなバグがありそう。
using System;
using System.Xml;
using System.Xml.XPath;
public class Tset
{
public static void Main ()
{
XmlDocument doc = new XmlDocument ();
doc.LoadXml ("
XPathNavigator nav = doc.CreateNavigator ();
XmlReader r = nav.ReadSubtree ();
r.Read ();
r.MoveToFirstAttribute ();
r.ReadAttributeValue ();
Console.WriteLine (r.Name);
Console.WriteLine (r.NamespaceURI);
}
}
別に余所の畑だけの話ではないけど、MSってXPathNavigatorの実装はあんまし検証していないような気がする。.NET 1.xもやや弱かった。
DOMにもさまざまなバグがあって、いくつかmcsのソースにメモしてcommitしたら、Gertから、もしMSにreportしていなければ代わりにやっとくよ、と言われたので、それは有り難いとそのまま全部引き取ってもらった。
あと、これはバグではないのだけど1、たぶんDOMをヘビーにいじっている人は、GetElementById()の挙動が変わっていることに注意した方が良い。ドキュメント ツリーからdetachされたサブツリー内のIDにヒットしたりしなかったりで、動作が変わっている。どう変わったのかは忘れたけど、今日(というか昨日)mcsにcommitしたコードのうち、[Category(“NotDotNet”)]という属性が追加されたテストは、.NET 2.0になってから動かなくなった奴だ。
Footnotes
-
DOMの仕様自体が明確でない ↩