[Mono-bugs] [Bug 499970] New: Xmlnode attribute and inertext seem broken
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Thu Apr 30 19:51:46 EDT 2009
http://bugzilla.novell.com/show_bug.cgi?id=499970
Summary: Xmlnode attribute and inertext seem broken
Classification: Mono
Product: Mono: Class Libraries
Version: SVN
Platform: x86-64
OS/Version: Linux
Status: NEW
Severity: Normal
Priority: P5 - None
Component: Sys.XML
AssignedTo: atsushi at ximian.com
ReportedBy: surfzoid2002 at yahoo.fr
QAContact: mono-bugs at lists.ximian.com
Found By: ---
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8)
Gecko/2009032803 Mandriva/1.9.0.8-1mdv2009.1 (2009.1) Firefox/3.0.8
A simple parsing function don't give the same result under win/.Net and
nux/Mono.
Reproducible: Always
Steps to Reproduce:
1. use the folowing code without the "item.Attributes != null &&" in the if,
with the XML example i give,to feed a treeview, you will have an "Object
reference not set to an instance of an object "
public static TreeNode XmlToTreeNode(string leXml)
{
TreeNode Result = null;
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(leXml);
XmlNode RootNde = doc.ChildNodes.Item(0);
if (string.IsNullOrEmpty(RootNde.Name) == false) Result = new
TreeNode(RootNde.Name);
foreach (XmlNode CurNode in RootNde.ChildNodes)
{
if (string.IsNullOrEmpty(CurNode.Name) == false)
{
TreeNode Nde = new TreeNode(CurNode.Name);
Nde.Tag = CurNode.InnerText;
if (CurNode.Attributes.Count > 0)
{
string AttrName = CurNode.Attributes[0].Name;
string AttrVal = CurNode.Attributes[0].InnerText;
TreeNode ChildNde = null;
for (int i = 0; i < CurNode.Attributes.Count; i++)
{
ChildNde = new
TreeNode(CurNode.Attributes[i].Name);
ChildNde.Tag = CurNode.Attributes[i].InnerText;
Nde.Nodes.Add(ChildNde);
}
}
foreach (XmlNode item in CurNode.ChildNodes)
{
TreeNode Nde2 = new TreeNode(item.Name);
Nde2.Tag = item.InnerText;
if (item.Attributes != null &&
item.Attributes.Count > 0)
{
string AttrName2 = item.Attributes[0].Name;
string AttrVal2 = item.Attributes[0].InnerText;
TreeNode ChildNde2 = null;
for (int i = 0; i < item.Attributes.Count; i++)
{
ChildNde2 = new
TreeNode(item.Attributes[i].Name);
ChildNde2.Tag =
item.Attributes[i].InnerText;
Nde2.Nodes.Add(ChildNde2);
}
}
Nde.Nodes.Add(Nde2);
}
Result.Nodes.Add(Nde);
}
}
}
catch (Exception Ex)
{
Console.WriteLine("{0} {1} {2}",
Ex.Message,Environment.NewLine, Ex.StackTrace);
TreeNode Err = new TreeNode("Error");
return Err;
}
return Result;
}
XML data example to use :
<person>
<login>rwooninck</login>
<email>tittiatcoke at gmail.com</email>
<realname>Raymond Wooninck</realname>
−
<watchlist>
<project name="KDE:KDE4:Factory:Desktop"/>
<project name="KDE:KDE4:UNSTABLE:Desktop"/>
<project name="openSUSE:Factory"/>
<project name="openSUSE:Factory:Contrib"/>
</watchlist>
</person>
Actual Results:
see the screenshot when using "item.Attributes != null &&" to prevent first
monobug and see the "extra" "#text".
Expected Results:
no more "Object reference not set to an instance of an object " and "extra"
"#text" to display same result as windows/.Net
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the mono-bugs
mailing list