Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

validate, parse xml

Îåêßíçóå áðü ôï ìÝëïò giannaros. Τελευταία δημοσίευση από το μέλος giannaros στις 20-11-2009, 10:04. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-11-2009, 16:50 55300

    validate, parse xml

    Καλησπέρα
    θέλω να αναπτύξω μία εφαρμογή σε c# όπου θα διαβάζει ένα xml αρχείο και αν είναι έγκυρο με βάση ένα xsd τότε θα πρέπει να δημιουργώ ένα δεύτερο xml αρχείο που θα περιέχει κάποια πεδία του πρώτου.Σχετικά με το validate από όσο έχω ψάξει χρησιμοποιούνται κυρίως 2 κλάσεις: η  XmlValidatingReader και η XmlReaderSettings. Αποφάσισα να χρησιμοποιήσω τη δεύτερη καθώς διάβαζα ότι από το .net 2 και μετά δεν χρησιμοποιείται η XmlValidatingReader.Ισχύει αυτό?Επίσης από την στιγμή που ούτως ή αλλως θα χρειαστεί να κάνω parse το xml αν είναι έγκυρο προκειμένου να πάρω κάποια από τα πεδία του μήπως είναι τζάμπα χρόνος οπότε είναι προτιμότερο να το κάνω validate με δικό μου κώδικα?
    Τέλος κάτι σχετικά άκυρο με την ενότητα που δημοσιεύω το post αλλα για να μην ανοίγω άλλο.Το xml αυτό θα μεταφέρεται μέσω wcf.Είναι καλύτερο να το στέλνω ως xml ή ως string?
    Ευχαριστώ πάρα πολύ για οποιαδήποτε απάντηση.
  •  19-11-2009, 18:11 55302 σε απάντηση της 55300

    Απ: validate, parse xml


    Ότι είναι obsolete από το 2.0 μπορείς να το δεις και επίσημα από εδώ

     http://msdn.microsoft.com/en-us/library/system.xml.xmlvalidatingreader.aspx

    οπότε έχεις δίκιο.

    αντί της XmlValidatingReader πρέπει να χρησιμοποιήσεις την XMLReader κλάσση και την Create method

    δες και αυτό το παράδειγμα



    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  19-11-2009, 22:18 55311 σε απάντηση της 55300

    Απ: validate, parse xml

    Η καλύτερη πηγή για τέτοιες ερωτήσεις είναι το ίδιο το documentation. Αν κοιτάξεις την ενότητα Validating XML Data with XmlReader θα δεις ότι το validation γίνεται από την κλάση XmlReader σε συνδυασμό με τα XmlReaderSettings και μπορείς να χρησιμοποιήσεις DTD ή XSD schema, inline (δηλαδή μέσα στο xml σου) ή εξωτερικό. Αν χρησιμοποιείς συχνά ένα schema μπορείς να το κρατήσεις στη μνήμη με την κλάση XmlSchemaSet αντί να το φορτώνεις κάθε φορά από ένα αρχείο ή URL.

    Όσον αφορά το WCF τώρα, γιατί δεν χρησιμοποιείς ένα data contract και να αφήσεις το WCF το ίδιο να αναλάβει το validation? Μπορείς μάλιστα να χρησιμοποιήσεις το svcutil.exe για να δημιουργήσεις client κώδικα ο οποίος θα περιλαμβάνει τα datacontracts που αντιστοιχούν στο xsd σου. Κοίτα την παράγραφο "XML Schema Documents and the SvcUtil Tool" για περισσότερες λεπτομέρειες


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-11-2009, 10:04 55333 σε απάντηση της 55311

    Απ: validate, parse xml

    Καλημέρα και ευχαριστώ για τις απαντήσεις.Οκ μέχρι εδώ αυτές τις κλάσεις χρησιμοποιώ για validate.Το πρόβλημα μου είναι πως αν είναι valid το Xml πρέπει να το διαβάσω όλο και να πάρω κάποια αυτούσια κομμάτια του.Μήπως έτσι κάνω 2 φορές την ίδια διαδικασία και καταναλώνω μνήμη και χρόνο?Δηλαδή διαβάζεται μία φορά το xml για validate και άλλη μία από εμένα.Σκέφτομαι μήπως θα ήταν πιο αποδοτικό να διαβάζω το xml(πχ με xmltextreader) και ταυτόχρονα να ελέγχω αν ειναι valid και να πέρνω και τα πεδία που θέλω.

    Για το κομμάτι του wcf μάλλον δεν έγινα αρκετά κατανοητός (ή δεν τα κατάλαβα εγώ).Το xml θέλω να το στέλνω αυτούσιο χωρίς να το πειράξω δηλαδή δεν θέλω datacontracts που να αντιστοιχούν στο xsd αλλά απλά να στέλνω το xml. Και το έχω δοκιμάσει με δύο τρόπους: μία να το στέλνω ως string και δεύτερον να έχω ένα datacontract όπου μέσα θα περιέχει το xml.Αλλά και πάλι δεν ξέρω ποιο είναι ποιο σωστό?

    Ευχαριστώ και πάλι
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems