|
■No69766 (まめしば さん) に返信
> xmlns属性ですが御指摘の通り含まれているようです。
> 勉強不足で申し訳ないのですが、これが原因に関わるものなのでしょうか。
関わります。
static void CW(XmlNode node)
{
if (node == null) Console.WriteLine(" (null) ");
else Console.WriteLine(node.OuterXml);
}
static void Main()
{
XmlDocument doc0 = new XmlDocument();
doc0.LoadXml(@"<hoge />");
XmlDocument doc1 = new XmlDocument();
doc1.LoadXml(@"<hoge xmlns='abc' />");
XmlDocument doc2 = new XmlDocument();
doc2.LoadXml(@"<hoge xmlns='xyz' />");
XmlDocument doc3 = new XmlDocument();
doc3.LoadXml(@"<sample:hoge xmlns:sample='abc' />");
Console.WriteLine(" ----- ルート要素 ----- ");
CW(doc0.DocumentElement);
CW(doc1.DocumentElement);
CW(doc2.DocumentElement);
CW(doc3.DocumentElement);
Console.WriteLine(" ----- /hoge ----- ");
CW(doc0.SelectSingleNode("/hoge"));
CW(doc1.SelectSingleNode("/hoge"));
CW(doc2.SelectSingleNode("/hoge"));
CW(doc3.SelectSingleNode("/hoge"));
Console.WriteLine(" ----- /*[namespace-uri()='abc'][local-name()='hoge'] ----- ");
CW(doc0.SelectSingleNode("/*[namespace-uri()='abc'][local-name()='hoge']"));
CW(doc1.SelectSingleNode("/*[namespace-uri()='abc'][local-name()='hoge']"));
CW(doc2.SelectSingleNode("/*[namespace-uri()='abc'][local-name()='hoge']"));
CW(doc3.SelectSingleNode("/*[namespace-uri()='abc'][local-name()='hoge']"));
Console.WriteLine(" ----- 名前空間を指定 ----- ");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("foo", "abc");
nsmgr.AddNamespace("bar", "xyz");
CW(doc0.SelectSingleNode("/foo:hoge", nsmgr));
CW(doc1.SelectSingleNode("/foo:hoge", nsmgr));
CW(doc2.SelectSingleNode("/foo:hoge", nsmgr));
CW(doc3.SelectSingleNode("/foo:hoge", nsmgr));
}
|