Fejl i .NET Xml klasser!
Jeg kunne godt taenke mig at faa at vide om der er andre som ogsaa ser denne inkonsistens i .NET XML, eller om der er noget galt med mit .net framework! Jeg har foelgende xml fil:<?xml version="1.0"?>
<MTSScene Version="311" ResetCamera="1">
<MTSSceneParms RenderMode="LightTexture" ShowWidgets="0" AntiAlias="0" BlendShadow="1" ShadowY="-0.1313" ShadowOpacity="0.85" ShadowRadius="10" ShadowColor="0 0 0" AccumMax="12" EdgeBias="1" EdgeEffect="1" SortRule="-1" FilterMinimumMilliSecs="100" AntiAliasMinimumMilliSecs="333" ForceNoProxy="1" Prelite="0" PreliteColor="0 0 0.99" VirtualMouse="1">
<Transform>
<Scale />
<Position />
<Shear />
<Rotate />
</Transform>
</MTSSceneParms>
<MTSCamera OrbitDist="2.94">
<Translate />
<Pivot />
<Scale />
<Rotate x="35.52338" y="-28.64786" />
<ViewLocation z="4" />
<LookAt />
<Translate2D />
<Scale2D />
</MTSCamera>
</MTSScene>
Jeg kunne godt taenke mig at fjerne alle tags der ikke har nogen attributter under sig (i sig selv eller i nogen af dens boern, boerneboern osv.). Jeg bruger xpath til at hente disse "uheldige" tags ud og fjerner dem derefter een efter een (btw. er der en smartere metode???). Dette goeres i c# saaledes:
System.Xml.XmlNodeList l = doc.SelectNodes("//*[count(.//@*) = 0]");
int t = l.Count; // Her er fejlen gemt. Hvis man fjerne dette kald, saa kommer der mindre iterationer i foreach loekken.
foreach(System.Xml.XmlNode node in l)
{
node.ParentNode.RemoveChild(node);
System.Diagnostics.Debug.WriteLine(node.Name);
}
Er der nogen der kan verificere denne inkonsistens? Ideen er selvfoelgelig at jeg laver det saaledes:
foreach(System.Xml.XmlNode node in doc.SelectNodes("//*[count(.//@*) = 0]"))
{
node.ParentNode.RemoveChild(node);
System.Diagnostics.Debug.WriteLine(node.Name);
}
men det giver mig ikke det rigtige resultat.
