读书人

XML文档读取有关问题

发布时间: 2012-01-19 00:22:27 作者: rapoo

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这个函数改成上面的,测试通过,楼主试试
------解决方案--------------------




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这个函数改成上面的,测试通过,楼主试试


node为什么要print两次呢?

读书人网 >C#

热点推荐