Κατά την ανάλυση XML με LINQ

Εδώ είναι ένα γρήγορο παράδειγμα χρησιμοποιώντας το LINQ να αναλύσει μερικές  XML και να πάρετε στο γλυκό, γλυκό αποδίδει σ ' αυτό.

Εδώ είναι το XML που θέλω να αναλύσει:

<?XML έκδοση = 1.0»" κωδικοποίηση = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout όνομα = "xyzzy">
      <Καρτέλες>
        <Στην καρτέλα TabOrder = "1" TabLabel = "x" SharePointContentType = "ένα" AdditionalConstraints = "ac1" />
        <Στην καρτέλα TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Καρτέλες>
    </PageLayout>

    <PageLayout όνομα = "xyzzy2">
      <Καρτέλες>
        <Στην καρτέλα TabOrder = "100" TabLabel = "x" SharePointContentType = "ένα" AdditionalConstraints = "ac1" />
        <Στην καρτέλα TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Στην καρτέλα TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Καρτέλες>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Θέλω να δημιουργήσει κάποιες καρτέλες κατά το χρόνο εκτέλεσης με την ανάλυση των ανωτέρω.  Καρτέλες μου εξαρτάται από μια διάταξη σελίδας.  Εάν το όνομα της διάταξης σελίδας μου είναι "xyzzy2", τότε θέλω να πάρω καρτέλες 100, 101 και 103 (Οι καρτέλες στο <PageLayout όνομα = "xyzzy2">).

Εδώ είναι το LINQ που κάνει:

var allTabs =
              από p στο
                  XElement.Parse(theXmlToParse).
                 
Στοιχεία("PageLayouts").
                  Στοιχεία("PageLayout")
              όπου (p.Attribute("όνομα").Value.Equals("xyzzy2"))
              από m σε p.Elements("Καρτέλες").Στοιχεία(«Καρτέλα»)
              Επιλέξτε m;

          Results.Text = συμβολοσειρά.Άδειο;

          foreach (var aTab σε allTabs)
          {
              Results.Text =
                  "Σειρά tab: " + aTab.Attribute("TabOrder").Αξία + " |" +
                  "Καρτέλα ετικέτα: " + aTab.Attribute("TabLabel").Αξία + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Αξία + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Αξία + "r";
          }

Στο παραπάνω, η μεταβλητή "theXmlToParse" είναι μια μεταβλητή συμβολοσειράς, αλλά μπορείτε να χρησιμοποιήσετε το φορτίο() μέθοδος σε ένα ρεύμα, αν σας αρέσει.

«Αποτελέσματα» είναι μια ετικέτα μιας φόρμας web και όταν αυτός ο κώδικας εκτελεί, μοιάζει με αυτό:

SNAGHTML11cd2e7c

Εγώ δεν έχουν εργαστεί έξω πώς να ταξινομήσετε τα αποτελέσματα ακόμη, έτσι θα το αφήσω αυτό για μια μελλοντική θέση blog.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Αφήνω μια απάντηση

Η διεύθυνση email σας δεν θα δημοσιευθεί. τα απαιτούμενα πεδία είναι επισημασμένα *