コンテンツへスキップ
ものがたり
戻る

XPathNavigator.ReadSubtree()

地味にいろんなバグがありそう。

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

  1. DOMの仕様自体が明確でない


この記事を共有:

前の記事
System.Orgyを正当化するextern alias
次の記事
Path.InvalidPathChars