Προς το περιεχόμενο

parse xml with jquery , replace


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα παιδιά!προσπαθώ να παρσάρω το xml μου το οποιο περιέχει url με τον χαρακτηρα ampersant (&).Κάνοντας χρήση της  replace προσπαθώ να αντικαταστήσω το '&' με '&'.Αλλά δε γίνεται σωστα το parse.Δεν μπορώ να επεξεργαστώ το xml ώστε να κάνω απο εκεί την αντικατάσταση , οπότε η λύση είναι με την εντολή replace.Μπορεί κάποιος να μου πει τι δεν κάνω σωστα;

$.ajax({
url: 'moredata.xml',
dataType: 'xml',
success: function (data) {
$(data).find('channel item').each(function(){
var title = $(this).find('title').text();
var link = $(this).find('link').text();
link = link.replace(/&/g, '&');
$(' .moredata ul').append(
$('<li />',{
text: title + link
})
);
})

},
error: function() {
$('.moredata').text('Failed to get feed');
}
});

δειγμα του xml :

<channel>
<title>
Real time weather in Greece
</title>
<link>http://www.123.gr/</link>
<image>
<url>
http://www.123.gr/templates/metar/images/metar.gif
</url>
<title>123.gr</title>
<link>http://www.123.gr/</link>
</image>
<description>
Real time weather in Greece
</description>
<language>el</language>
<pubDate>Thu, 03 Apr 2014 17:08:10 +0300</pubDate>
<copyright>123.gr</copyright>
<managingEditor>[email protected]</managingEditor>
<webMaster>[email protected]</webMaster>
<item>
<title>Center</title>
<description>Salonica</description>
<link>
http://www.metar.gr/index.php?option=com_jumi&fileid=12&Itemid=73&station=1227
</link>
<temp>16.7 °C</temp>
<glat>40.422726139672626</glat>
<glon>22.93392777442932</glon>
</item>
</channel> 
Δημοσ.

Μπορεί κάποιος να μου πει τι δεν κάνω σωστα;

"Βλέπεις" σαν xml κάτι που απλά δεν είναι xml.

Και προσπαθείς (ματαίως) να πείσεις και τη javascript ότι είναι:

dataType: 'xml',

Not gonna hapen! B)

Δημοσ.

"Βλέπεις" σαν xml κάτι που απλά δεν είναι xml.

Και προσπαθείς (ματαίως) να πείσεις και τη javascript ότι είναι:

dataType: 'xml',

Not gonna hapen! B)

 

To xml μου το εχει δώσει ο καθηγητής μου για να φτιαξω μια ιστοσελίδα.Όταν αντικαθιστώ το & με & στο xml και κάνω χρήση της replace για κάποιον άλλο κομβο  το parsing γίνεται κανονικά.

var title = title.replace(/center/ , "replaced");

Έτσι δηλαδη


<link>
http://www.metar.gr/index.php?option=com_jumi&fileid=12&Itemid=73&station=1227
</link>

Δημοσ.

Βασικά το μόνο που μπορείς να κάνεις είναι να πάρεις την είσοδο με dataType: "text" (για να μη προσπαθήσει το jQuery να την παρσάρει), να κάνεις την αντικατάσταση και μετά να παρσάρεις με $.parseXML. Απο κει και πέρα μπορείς να δουλέψεις πάνω στο αποτέλεσμα κανονικά.

 

Πες και στον καθηγητή σου ότι αυτό με τα αδέσποτα ampersands δεν είναι XML και θέλει διόρθωμα.

  • Like 1
Δημοσ.

Βασικά το μόνο που μπορείς να κάνεις είναι να πάρεις την είσοδο με dataType: "text" (για να μη προσπαθήσει το jQuery να την παρσάρει), να κάνεις την αντικατάσταση και μετά να παρσάρεις με $.parseXML. Απο κει και πέρα μπορείς να δουλέψεις πάνω στο αποτέλεσμα κανονικά.

 

Πες και στον καθηγητή σου ότι αυτό με τα αδέσποτα ampersands δεν είναι XML και θέλει διόρθωμα.

Ευχαριστώ για την απάντηση defacer . θα δοκιμάσω να δουλέψω με τον τρόπο που μου προτείνεις . Επειδή είμαι αρχάριος στο web design στον καθηγητή να πω να μου διορθώσει το xml αντικαθιστώντας το '&' με '&' ; Κατά τ άλλα είναι εντάξει το αρχείο;

Δημοσ.

Γιατι το λες αυτο; Πιο ευκολο ειναι να προβαλλεις ενα xml με xsl παρα με js.

Ευχαριστώ για την πρόταση . Θα κοιτάξω τι παίζει με xslt . 

Δημοσ.

Ας υποθέσουμε οτι το πρόβλημα σου ειναι το url string, μια επισης λύση ειναι το <![CDATA]]>

<link><![CDATA[http://www.metar.gr/index.php?option=com_jumi&fileid=12&Itemid=73&station=1227]]>
</link>

Με "<![CDATA]]>" το url string μεσα στο link το δεχεται ως XML valid άσχετα με το οτι δεν θα πρεπε να ειναι

Απλά για να μην ξενερωσεις, keep it up :)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...