日期:2014-05-18  浏览次数:20747 次

XML文档读取问题
void   print(XmlNode   node)
{
          switch(node.NodeType)
          {
                  case   XmlNodeType.Element:
                            Console.WriteLine( " <{0}> ",node.Name.ToString());
                            break;
                  case   XmlNodeType.Text:
                            Console.WriteLine( "{0} ",node.Value.ToString());
                            break;
          }
}

void   treeprint(XmlNode   node)
{
          print(node);
          if(node.HasChildNode)
          {
                    treeprint(node.FirstChild);
                    print(node);
          }
          while(node.NextSibling!=null)
          {
                    node=node.NextSibling;
                    treeprint(node);
          }
}

//------------------
用上面的函数读取XML文档树的时候,为什么文档的节点超过3个,就出现问题呢?


------解决方案--------------------
HasChildNode
------->
HasChildNodes

你的代码没啥问题

------解决方案--------------------
没问题啊~
------解决方案--------------------
帮顶了!
------解决方案--------------------
递归有错误,改成下面这样就行了。

void print(XmlNode node)
{
switch (node.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine( " <{0}> ", node.Name.ToString());
break;
case XmlNodeType.Text:
Console.WriteLine( "{0} ", node.Value.ToString());
break;
}
}
void treeprint(XmlNode node)
{
print(node);
if (node.HasChildNode)
{
node = node.FirstChild;
treeprint(node);
}
while (node.NextSibling != null)
{
node = node.NextSibling;
treeprint(node);
}
}

------解决方案--------------------
protected void treeprint(XmlNode node)
{
print(node);
if (node.HasChildNodes)
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
treeprint(node.ChildNodes[i]);
}
print(node);
}


//while (node.NextSibling != null)
//{
// node = node.NextSibling;
// treeprint(node);
//}
}

把treeprint这个函数改成上面的,测试通过,楼主试试
------解决方案--------------------