Βρείτε μέσα από πολλαπλά χαρακτηριστικά σε XML

ψήφοι
7

Προσπαθώ να αναζητήσετε πολλαπλές ιδιότητες σε XML:

<APIS>
  <API Key=00001>
    <field Username=username1 UserPassword=password1 FileName=Filename1.xml/>
    <field Username=username2 UserPassword=password2 FileName=Filename2.xml/>
    <field Username=username3 UserPassword=password3 FileName=Filename3.xml/>
  </API>
</APIS>

Θα πρέπει να ελέγξετε αν στο «πεδίο» οι τιμές Όνομα Χρήστη ΚΑΙ UserPassword είναι τόσο ό, τι είμαι σε σύγκριση με τις τιμές σύνολο δεδομένων μου, είναι ένας τρόπος που μπορώ να ελέγξει πολλαπλές ιδιότητες (ΚΑΙ κατάσταση) χωρίς να γράψετε τη δική μου λογική χρήση Σημαίες και το σπάσιμο εκεί από βρόχους.

Είναι μια ενσωματωμένη λειτουργία των XMLDoc που το κάνει εκεί; Οποιαδήποτε βοήθεια θα εκτιμηθεί!

Δημοσιεύθηκε 09/12/2008 στις 20:04
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
25

Για να αναζητήσετε αυτό που θέλετε στο απόσπασμα της XML που δώσατε, θα χρειαστείτε τα εξής έκφραση XPath:

/APIS/API/field[@Username='username1' and @UserPassword='password1']

Αυτό είτε θα επιστρέψει κάτι, αν το όνομα χρήστη και τον κωδικό πρόσβασης αγώνα - ή όχι, αν δεν το κάνουν.

Από couse η έκφραση XPath είναι μόνο μια κλωστή - μπορείτε να δημιουργήσετε δυναμικά με τιμές που εισήχθησαν σε ένα πεδίο φόρμας, για παράδειγμα.

Αν σας πω ποια γλώσσα / περιβάλλοντος στην οποία βρίσκεστε, δείγματα κώδικα που δημοσιεύονται εδώ κατά πάσα πιθανότητα θα πάρει πιο συγκεκριμένη.

Αυτός είναι ένας τρόπος για να το κάνουμε σε C # (VB.NET είναι ανάλογη):

// make sure the following line is included in your class
using System.Xml;

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("your XML string or file");

string xpath = "/APIS/API/field[@Username='{0}' and @UserPassword='{1}']";
string username = "username1";
string password = "password1";

xpath = String.Format(xpath, username, password);
XmlNode userNode = xmldoc.SelectSingleNode(xpath);

if (userNode != null)
{
  // found something with given user name and password
}
else
{
  // username or password incorrect
}

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

Υπάρχει επίσης ένα How-To από τη Microsoft διατίθεται: ΔΙΑΔΙΚΑΣΙΕΣ: Χρήση της System.Xml.XmlDocument Class Εκτέλεσης XPath ερωτημάτων σε Visual C # .NET

Απαντήθηκε 09/12/2008 στις 20:32
πηγή χρήστη

ψήφοι
2

Αναζήτηση XML είναι αυτό που XPath έγινε για. Δεν διευκρίνισε ποια γλώσσα που χρησιμοποιείτε, αλλά εδώ είναι ένα άρθρο σχετικά με την επεξεργασία XML με τη χρήση XPath σε Java, και εδώ είναι ένα χρησιμοποιώντας C #.

Απαντήθηκε 09/12/2008 στις 20:16
πηγή χρήστη

ψήφοι
1

Αυτό είναι ένα FAQ για το XPath εκφράσεις .

Μία ή περισσότερες εκφράσεις XPath (των οποίων αξιολογείται τύπος είναι boolean), μπορούν να συνδεθούν μεταξύ τους χρησιμοποιώντας τις τελεστές Boolean «και» και «ή» και χρησιμοποιώντας τη συνάρτηση XPath όχι () .

Να σημειωθεί ότι τα ονόματα αυτά είναι με πεζά γράμματα . XPath είναι διάκριση πεζών-κεφαλαίων και κάθε άλλη κεφαλαιοποίηση από αυτά τα ονόματα (όπως «ΚΑΙ») δεν θα αναγνωρίζεται ως το όνομα του λογικούς τελεστές.

Έτσι, στη συγκεκριμένη περίπτωση, η επιθυμητή έκφραση XPath θα είναι κάτι σαν το παρακάτω:

/*/*/field[@Username = your-ds-username and @UserPassword = your-ds-UserPassword]

όπου your-ds-usernameκαι your-ds-UserPasswordθα πρέπει να αντικατασταθεί με τις αντίστοιχες τιμές που θέλετε να χρησιμοποιήσετε από το σύνολο δεδομένων.

Απαντήθηκε 10/12/2008 στις 03:37
πηγή χρήστη

ψήφοι
0

Για να αναζητήσετε πολλά χαρακτηριστικά στην περίπτωση της ετικέτας XML, μπορούμε να χρησιμοποιήσουμε την ακόλουθη έκφραση XPath / APIS / API / τομέα [@ Όνομα Χρήστη = 'USERNAME1'] [@ UserPassword = 'password1']

Απαντήθηκε 04/11/2014 στις 12:23
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more