2012-12-06 14 views
5

संभव डुप्लिकेट:
Java: How to decode HTML character entities in Java like HttpUtility.HtmlDecode?जावा का उपयोग कर एचटीएमएल कोड कैसे डीकोड करें?

मैं पैराग्राफ (जैसे StackOverflow में title) एक html फ़ाइल से निकालने की जरूरत है।

मैं आवश्यक फ़ील्ड निकालने के लिए जावा में नियमित अभिव्यक्तियों का उपयोग कर सकता हूं लेकिन मुझे decode फ़ील्ड प्राप्त हुए हैं।

उदाहरण

क्षेत्र निकाले: डिकोडिंग के बाद

Paging Lucene&#39s search results (with **;** among **&#39** and **s**) 

क्षेत्र:

Paging Lucene's search results 

वहाँ जावा में किसी भी वर्ग है कि मुझे इन एचटीएमएल कोड में परिवर्तित करने की अनुमति देगा है?

+0

अपने HTML टैग होते हैं? –

+0

हां, लेकिन निकाले गए फ़ील्ड में टैग – user

+5

स्टार्टर्स के लिए नहीं है, [HTML का विश्लेषण करने के लिए regex का उपयोग करके] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self- निहित टैग) पहली जगह में पूरी तरह से गलत है। जसप की तरह बस एक [एचटीएमएल पार्सर] (http://stackoverflow.com/questions/3152138/what-are-the-pros-and-cons-of-the-leading-java-html-parsers) का उपयोग करें। थोड़ा सभ्य एक आपके लिए तुरंत पहले से ही अनदेखा एचटीएमएल होगा। – BalusC

उत्तर

24

उपयोग तरीकों से Apache Commons Lang

import org.apache.commons.lang.StringEscapeUtils; 
// ... 
String afterDecoding = StringEscapeUtils.unescapeHtml(beforeDecoding); 
+0

आपका लिंक टूटा हुआ है – Grux

+0

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeHtml(java.lang.String) - नवीनतम लिंक – useranon

1

Neko HTML एचटीएमएल पर उपयोगी परिवर्तनों का एक बहुत करता है और "HTML Text Parser: Converting HTML to Text in Java using NekoHTML" कैसे विशेष रूप से इसका इस्तेमाल करने के शाब्दिक सामग्री को निकालने के लिए बताते हैं प्रदान की है।

3

regexp द्वारा सबकुछ हल करने का प्रयास न करें।

आप कुछ हिस्सों को हल कर सकते हैं - जैसे की जगह संस्थाओं के रूप में, काफी बेहतर दृष्टिकोण वास्तव में एक (मजबूत) HTML पार्सर उपयोग करने के लिए है।

यह प्रश्न देखें: RegEx match open tags except XHTML self-contained tags क्यों रेगेक्सपी स्विस सेना चेनसॉ के साथ ऐसा करना एक बुरा विचार है। गंभीरता से, इस प्रश्न और शीर्ष उत्तर को पढ़ें, यह स्टैक ओवरफ़्लो हाइलाइट है!

regex के साथ

चक नोरिस कर सकते हैं पार्स एचटीएमएल।

बुरी खबर है: वहाँ एक से अधिक तरीके वर्ण एन्कोड करने के लिए है।

https://en.wikipedia.org/wiki/Character_encodings_in_HTML

उदाहरण के लिए, चरित्र 'λ' के रूप में λ, λ या λ

और अगर आप वास्तव में अशुभ हैं, कुछ वेब साइट के लिए कुछ ब्राउज़रों क्षमताओं पर निर्भर करता है दर्शाया जा सकता है अनुमान लगाना चरित्र अर्थ। उदाहरण के लिए ™ मान्य नहीं है, फिर भी कई ब्राउज़र इसे के रूप में व्याख्या करेंगे।

स्पष्ट रूप से एक कस्टम लाइब्रेरी अभिव्यक्ति को हैक करने की कोशिश करने के बजाय इसे समर्पित पुस्तकालय में छोड़ना एक अच्छा विचार है।

तो मैं दृढ़ता से अनुशंसा:

  • फ़ीड स्ट्रिंग एक मजबूत HTML पार्सर में
  • पार्स हो जाओ (और पूरी तरह से डीकोड) स्ट्रिंग वापस
+1

मुझे एचटीएमएल से उसी संरचनाओं और टैग (जैसे विकिपीडिया) के साथ निकालने की आवश्यकता है। तो मुझे लगता है कि रेगेक्स एक अच्छा दृष्टिकोण है। – user

+2

@MrCarAsus: नहीं यह नहीं है। निष्कर्षण के लिए एक HTML पार्सर, और डीओएम का प्रयोग करें। यही वह है जो वे हैं! –

+0

डीबीपीडिया, बीटीडब्ल्यू का उपयोग करने का प्रयास करें। यह विकिपीडिया का पहले से ही विश्लेषण संस्करण है। –

संबंधित मुद्दे