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

 

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

Πως διαβάζουξμε το id ενός κόμβου σε XML;

Îåêßíçóå áðü ôï ìÝëïò dtakis. Τελευταία δημοσίευση από το μέλος dtakis στις 06-02-2007, 12:40. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-02-2007, 17:44 24559

    Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Έψαχνα τι μπορώ να διαβάσω με την XmlTextReader και δεν βρήκα κάποιο τρόπο να διαβάσω τα id των κόμβων (αν έχουν) π.χ.

    <People>
      <Person id="1" ssn="555121212">
        <Name>
          <FirstName>Joe</FirstName>
          <LastName>Suits</LastName>
        </Name>
        <Address>
          <Street id="1" name="Success Way" value="1800">1800 Success Way</Street>
          <City>Redmond</City>
          <State>WA</State>
          <ZipCode>98052</ZipCode>
        </Address>
        <Job>
          <Title>CEO</Title>
          <Description>Wears the nice suit</Description>
        </Job>
      </Person>

    Με ενδιαφέρει να διαβάζω id, name & value ... πέρα από το εσωκλειώμενο κείμενο.

    Ευχαριστώ εκ των προτέρων

    Δημοσίευση στην κατηγορία: ,
  •  05-02-2007, 17:48 24560 σε απάντηση της 24559

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Παρατηρώ ότι όλα αυτά είναι attributes ... μπορούμε να τα πέρνουμε με βάση το όνομα του attribute ή να βλέπουμε ποιο όνομα έχει κατά το βρόχο του διαβάσματος του reader;

  •  06-02-2007, 08:22 24578 σε απάντηση της 24560

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    O XmlTextReader έχει την GetAttribute και την HasAttribute. Τις δοκίμασες και δεν σου κάνουν?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-02-2007, 09:40 24581 σε απάντηση της 24559

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Εγώ προσωπικά θα έκανα το εξής :

    string Id="";
    DataSet ds = new DataSet();
    ds.ReadXml("file.xml");

    foreach(DataTable tb in ds.Tables)
    {
        foreach(DataRow row in tb.Rows)
        {
           id = row["id"].ToString().Trim();
           // το ίδιο και για το υπόλοιπα columns
        }
    }
  •  06-02-2007, 10:03 24584 σε απάντηση της 24581

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Ο τρόπος αυτός είναι μάλλον ο πιο περίπλοκος και αργός. Μπορείς άνετα να φορτώσεις το xml αρχείο σε ένα XmlDocument και να ψάξεις για τις τιμές των attributes είτε σε loop είτε (το προτιμότερο) χρησιμοποιώντας XPath. Εδώ όμως μιλάμε για XmlReader, ο οποίος υλοποιεί την πιο γρήγορη μέθοδο ανάγνωσης ενός αρχείου XML, αντίστοιχη του DataReader για τις βάσεις. Ανάλογα με το τί χρειάζεται κανείς, ταχύτητα ή ευχρηστία, επιλέγει μία από τις δύο.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-02-2007, 10:54 24586 σε απάντηση της 24581

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Όταν δουλεύεις σε XML data έχεις πολλές επιλογές.  Τι θα επιλέξεις εξαρτάται από το τι θες να κάνεις. Στην περίπτωσή σου, αν τα XML docs δεν είναι μεγάλα, θα επέλεγα να χρησιμοποιήσω την XmlDocument κλάση και να δουλέψω το DOM καθώς με ένα XPath μπορεί να πάρω τις τιμές που θέλω. Αν τα XML docs είναι μεγάλα, θα επέλεγα XmlTextReader (όπως σου είπε ο Παναγιώτης). Βέβαια, το "μεγάλα" ή "μικρά" είναι πολύ σχετικό και εξαρτάται από το σύστημά σου και τα specs σου και φυσικά είναι μόνο μία παράμετρος για το πρόβλημα του τι XML API θα επιλέξεις.

    Ένα παράδειγμα:

    Dim settings As New XmlReaderSettings()
    settings.Schemas.Add("http://someuri/name", "name.xsd")
    settings.ValidationType = ValidationType.Schema

    Dim rdr As XmlReader = XmlReader.Create("myxmldoc.xml", settings)
    Dim doc As XmlDocument = New XmlDocument
    doc.Load(rdr)
    Dim nl As XmlNodeList = doc.GetElementsByTagName("Person")
    For Each n As XmlNode In nl
    Console.WriteLine(n.Attributes.GetNamedItem("id").InnerText)
    Next


    Vir prudens non contra ventum mingit
  •  06-02-2007, 10:55 24587 σε απάντηση της 24586

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Ωωωπ! Με πρόλαβες Παναγιώτη!


    Vir prudens non contra ventum mingit
  •  06-02-2007, 12:23 24590 σε απάντηση της 24586

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    Τα διαβάζω από το internet οπότε πιστεύω ότι καλύτερο είναι να χρησιμοποιώ τον πιο γρήγορο τρόπο καθώς 2 δείγματα που έχω είναι κοντά 500 KB.

    Ευχαριστώ για τις απαντήσεις σας πιστεύω ότι δόθηκαν πολλές καλές εξηγήσεις και επιλογές!

  •  06-02-2007, 12:40 24591 σε απάντηση της 24586

    Απ:Πως διαβάζουξμε το id ενός κόμβου σε XML;

    KelMan:

    Όταν δουλεύεις σε XML data έχεις πολλές επιλογές.  Τι θα επιλέξεις εξαρτάται από το τι θες να κάνεις. Στην περίπτωσή σου, αν τα XML docs δεν είναι μεγάλα, θα επέλεγα να χρησιμοποιήσω την XmlDocument κλάση και να δουλέψω το DOM καθώς με ένα XPath μπορεί να πάρω τις τιμές που θέλω. Αν τα XML docs είναι μεγάλα, θα επέλεγα XmlTextReader (όπως σου είπε ο Παναγιώτης). Βέβαια, το "μεγάλα" ή "μικρά" είναι πολύ σχετικό και εξαρτάται από το σύστημά σου και τα specs σου και φυσικά είναι μόνο μία παράμετρος για το πρόβλημα του τι XML API θα επιλέξεις.

    Ένα παράδειγμα:

    Dim settings As New XmlReaderSettings()
    settings.Schemas.Add("http://someuri/name", "name.xsd")
    settings.ValidationType = ValidationType.Schema

    Dim rdr As XmlReader = XmlReader.Create("myxmldoc.xml", settings)
    Dim doc As XmlDocument = New XmlDocument
    doc.Load(rdr)
    Dim nl As XmlNodeList = doc.GetElementsByTagName("Person")
    For Each n As XmlNode In nl
    Console.WriteLine(n.Attributes.GetNamedItem("id").InnerText)
    Next

    Μάνο στην περίπτωση που ζητήσουμε όλα τα Person μπορούμε να κάνουμε ένα ακόμα εσωτερικό loop για να πάρουμε τα elements που βρίσκονται μέσα στα <Person></Person> π.χ. αν έχουμε τη δομή:

    <Person>

    <Children id="105" name="George">

    </Children>

    </Person>

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