2016-03-31 14 views
1

XSLT (v 1.0), üzerinde denetimim olmayan bir sunucu tarafından oluşturulan XML belgelerindeki dönüştürmeleri çalıştırmak için kullanıyorum. Benim XSLT nedeniyle hatalı biçimlendirilmiş XML başarısız olmasına neden oluyorXSLT hatalı biçimlendirilmiş XML hatası veriyor <br> etiketi

<item> 
    <sub-item> 
    <rich-text> 
     <p> text<br></p> //This comes from another server 
    </rich-text> 
    </sub-item> 
</item> 

: normalde bir sorun iken, bir dosya belirli bir hatalı oluşturulmuş <br> etiketi var.

Bu etiketi XSLT içinde yok saymanın veya bu etiketden kurtulmanın bir yolu var mı?

Sonuç olarak, bu XSLT, üzerinde denetimim bulunmayan bir sunucu üzerinde bir dışa aktarma olacaktır; bu nedenle, dışa aktarma işlemine başlamadan önce XML'i hiçbir şekilde değiştiremiyorum.

+1

seçeneği 3. yardımcı olabilir

Tidy Teknik Katkılarınıza bir XML dokümanı bir hata bildirir bir XML ayrıştırıcı kullanarak herhangi XSLT işlemci değildir. XSLT işlemcinizin bir XML ayrıştırıcı yerine bir XML ayrıştırıcısını takmanıza izin verip vermediğini kontrol etmeniz gerekir. –

+1

* "Verme işlemine başlamadan önce XML'i hiçbir şekilde kullanamıyorum." * Bu oldukça bir K.O. Girişiniz XML değildir (iyi tanımlanmış, yani iyi biçimlendirilmemiş bir şey XML değil, köşeli parantez içeren bir metin). İşlem yapmadan önce XML'e dönüşemezseniz, şansınız kalmaz. – Tomalak

cevap

1

Belgeniz XML değil. b olmadan kapalı, iyi biçimlendirilmiş ve bu nedenle XML değil.

Seçenekleriniz şunlardır:

  1. XML sağlamak için belgenin kaynağını sabitleyin.
  2. XML olarak manuel olarak onarabilirsiniz.
  3. XML olarak otomatik olarak onarın.
  4. XML olmayan olarak ayrıştırın.

Seçenek 1 gerçekten en iyisidir çünkü gereksinimi kolayca ifade edebilirsiniz: XML üretin. Bunu yapmak için belirli, belirlenmiş bir kural kümesi vardır; Öte yandan, bunu yapmanın sınırsız yolu vardır.

2, 3 ve 4 numaralı seçeneklerin, verileri XML değil metin olarak işlemesini gerektirdiğini unutmayın.

+0

XML yaklaşımına sahip olun ve belgeyi HTML'den XML'e ayrıştırmak için Tidy veya benzeri kullanın. .NET, bunun iyi bir işini yapan HTMLAgilityPack'e sahiptir. Https://htmlagilitypack.codeplex.com/ –