/ Forside/ Teknologi / Udvikling / XML / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn 

Kodeord  


Reklame
Top 10 brugere
XML
#NavnPoint
fluffycla.. 300
molokyle 130
pirt03 110
bentjuul 110
McOle 100
pmbruun 70
Klaudi 50
rfh 50
EXTERMINA.. 40
10  Angband 26
XPathNavigator C# og namespace
Fra : kafkakim
Vist : 502 gange
200 point
Dato : 02-07-09 02:01

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?



 
 
Kommentar
Fra : MatrixRevolution


Dato : 01-09-09 08:28

Hey...

Umiddelbart vil jeg mene at det er XSD´en du skal rode lidt med.

har du prøvet at indlæse et XmlDocument object over i et DataSet object ?

Her kan du både indlæse en XML -fil og et XSD dokument, som jo også er XML.

Der er en metode der hedder ds.ReadXSD(param) - noget i den stil.

Problemet er jo, at namespaces er angivet som default i XSD´en, sammen med andre oplysninger som urn, types, hvor mange gange noget givent må optræde i xml dokumentet osv.

Men hvis du selv laver et xsd dokument uden et namespace, vil det måske virke.

Sommerhilsen herfra

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 174883
Tips : 31764
Nyheder : 719565
Indlæg : 6391872
Brugere : 218410

Månedens bedste
Årets bedste
Sidste års bedste