varken aşağıdaki minimum JavaScript parçası vardır:Krom 22 çıkışlar geçersiz XML nitelikleri bir Xline ad
var xml = '<El a:title="T" a:href="H" xmlns:a="http://www.w3.org/1999/xlink" />';
var dom = new DOMParser().parseFromString(xml, 'text/xml');
xml = new XMLSerializer().serializeToString(dom);
Ben (tıpkı tarayıcınızın JavaScript konsolunda yapıştırın) çoğu tarayıcıda kodu çalıştırmak, ayrıştırılmış-sonra-seri hale getirilmiş XML, orijinaline eşdeğerdir. Chrome 8 Örneğin ben alıyorum: Ancak
<El xmlns:a="http://www.w3.org/1999/xlink" a:title="T" a:href="H"/>
Chrome 22 aynı kod parçası için XML değiştirir:
<El xmlns:a="http://www.w3.org/1999/xlink" xlink:title="T" xlink:href="H"/>
Not başlığı ve href özelliklerinin kullandığı ad alanı öneki xlink
olmadığını herhangi bir yerde tanımlanmış, bu yüzden XML artık geçersiz. Muhtemelen tahmin edebileceğiniz gibi bu, XML'yi sonradan kullanmaya çalışan kod için her türlü soruna neden olur.
Bu, XMLSerializer'daki bir hata mıdır yoksa DOM'ın nasıl serileştirilmesi gerektiği konusunda bazı incelemeler kaçırıyor muyum?
Ayrıca, XML'in XLink ad alanı öneki olarak xlink
kullanmak için görünen tercihle eşleşmesini sağlamak yerine, kod koyabileceğim bir çözüm bulmuş muydunuz?
Güncelleme Bazı ek sınama yaptım ve sorun XMLSerializer Xline ad tanır ve düzgün o öneki kayıt olmadan, bunun için bir xlink
öneki çıkışı ısrar gerçeği neden gibi görünüyor.
Yani bu parça eser ince: Yani burada
var xml = '<El a:title="T" a:href="H" xmlns:a="any-other-namespace-uri" />';
var dom = new DOMParser().parseFromString(xml, 'text/xml');
xml = new XMLSerializer().serializeToString(dom);
daha az tanınmış bir şeye ad alanı URL değişti ve çıkış şimdi geçerlidir:
aşağıdaki parçası da gayet iyi çalışıyor :
var xml = '<El a:title="T" a:href="H" xmlns:a="http://www.w3.org/2000/xlink" />';
var dom = new DOMParser().parseFromString(xml, 'text/xml');
xml = new XMLSerializer().serializeToString(dom);
Bu durumda XLink ad alanı için "beklenen" önekini kullanırız. Daha sonra sorunsuz serializes:
<El xmlns:a="http://www.w3.org/2000/xlink" a:title="T" a:href="H"/>
Yanıtın tam olarak ne olduğundan emin değilim, ancak bu sorunla ilgili olabilir: http://stackoverflow.com/questions/8979267/xmlserializer-strips-xlink-from-xlinkhtml-svg-image-tag – Barbarrosa
Teşekkürler İşaretçi Barbarrosa için. Chrome'un SVG/XLink işlemiyle ilgili raporlar görmüştüm. Ama aslında bunun için "düzeltmenin" yaşadığım problemin sebebi olabileceğinden korkuyorum. Bağlantınız ile aslında rahatsız edici kodlara bir adım daha yaklaşabilirim, bu yüzden teşekkürler! –