Hej
Jeg sidder med noget kode hvor jeg modtager noget xml
og skal sende det videre med hurtigst mulige preformance.
Vi har noget XML i lad os sige som følgende
test.xml
<root>
<Element>
....
</Element>
<root>
Og i koden (C#) følgende (som skal bruges til en XSLT helper)
XmlDocument doc = new XmlDocument("text.xml");
XPathNodeIterator it = doc.CreateNavigator().Select("*");
return it;
Det går fint.
Men hvis vi så får et default namespace som fx.
<root xmlns="
http://www.mynamespace.com">
<Element>
....
</Element>
<root>
For vi ingen resultat med ovenstående kode
Så derfor for at komme uden om det fjernes default namespace
Som fx:
XmlDocument doc = new XmlDocument("text.xml");
String strXml = doc.OuterXml.ToString();
strXml = strXml.replace("xmlns=","blabla=");
doc.loadXml(strXml);
XPathNodeIterator it = doc.CreateNavigator().Select("*");
Problemet er at dette er temmelig tidskrævende eftersom det først laves en replace og derefter en konvertering fra string til XML dok igen. Specielt hvis det er et meget stor xml dokument.
Der må være andre metoder som giver en XPathNodeIterator fra et XML dokument hvor default namespace er sat?
Jeg har prøver at fjerne default namespace gennem XML dokumentet men uden held.
Det samme med at fjerne attributen xmlns fra XML dokumentet. Dette virker heller ikke.
Sjovt nok når man tæller antal attributter så er den fjernet, men skriver man xml dokumentet ud
er default namespace stadig der, så det kan ikke fjernes ved at kode sig ud af bruge funktionerne på XmlDokument i C#
Kan nogle hjælpe her?