दिलचस्प पोस्ट
जावास्क्रिप्ट में आपको टाइमस्टैम्प कैसे मिलता है? सीएसएस में चेकबॉक्स की सीमा शैली कैसे बदलनी है? Django में स्थानीय बनाम उत्पादन सेटिंग्स का प्रबंधन कैसे करें? जीएनयू मेकफाइल वैरिएबल असाइनमेंट =,? =, = = और = = के बीच अंतर क्या है? .NET में KeyDown और KeyPress के बीच अंतर क्या है? __del__ विधि क्या है, इसे कैसे कॉल करें? किसी पाठ फ़ाइल में बहुआयामी सरणी कैसे लिखनी है? PHP सत्र रीडायरेक्ट के बाद खो गया स्पष्ट डोमेन के साथ स्थानीयहोस्ट पर कुकीज जावास्क्रिप्ट में "फंक्शन *" क्या है? सूची (टी) और संग्रह (टी के) के बीच अंतर क्या है? किसी विंडोज़ प्रपत्र आवेदन में कीबोर्ड शॉर्टकट को लागू करने का सर्वोत्तम तरीका? HTMLCollection, नोड सूची, और ऑब्जेक्ट्स के बीच अंतर जावास्क्रिप्ट या jquery का उपयोग करके ईमेल कैसे भेजें क्या वीबी.नेट में एक सशर्त त्रिगुट ऑपरेटर है?

जावा एक्सएमएल लाइब्रेरी क्या है (dom4j को बदलने के लिए)?

मैं dom4j जैसे कुछ की तलाश कर रहा हूं, लेकिन बिना dom4j के मौसा, जैसे कि खराब या अनुपलब्ध प्रलेखन और प्रतीत होता है कि विकास की स्थिति रुके।

पृष्ठभूमि: मैं dom4j का प्रयोग कर रहा हूं और वकालत कर रहा हूं, लेकिन इसके बारे में पूरी तरह से सही महसूस नहीं कर रहा हूं क्योंकि मुझे पता है कि पुस्तकालय इष्टतम से दूर है (उदाहरण: देखें कि XSLT संबंधित स्टाइलशीट क्लास में तरीके कैसे प्रलेखित हैं; ) String mode पैरामीटर के रूप में?)

आवश्यकताएं: शुद्ध जेडीके ( javax.xml और org.w3c.dom संकुल) का उपयोग करते समय लाइब्रेरी को बुनियादी एक्सएमएल हैंडलिंग करना चाहिए। इस तरह से चीजें:

  • एक XML दस्तावेज़ (फ़ाइल या स्ट्रिंग से) किसी ऑब्जेक्ट में पढ़ें, आसानी से घुसने और डोम में हेरफेर करें, XPath क्वेरी करें और इसके खिलाफ XSLT चलाएं
  • अपने जावा कोड में एक XML दस्तावेज़ बनाएँ, तत्वों और विशेषताओं और डेटा को जोड़ें, और अंत में एक फाइल या स्ट्रिंग में दस्तावेज़ लिखें।

मैं वास्तव में क्या dom4j वादे , वास्तव में पसंद है: " उपयोग करने में आसान, XML, XPath और XSLT […] के साथ DOM, SAX और JAXP के लिए पूर्ण समर्थन के साथ काम करने के लिए खुला स्रोत पुस्तकालय। " और आगामी dom4j 2.0 सब कुछ ठीक करने का दावा करता है : पूरी तरह से जावा 5 का उपयोग करें और लापता प्रलेखन जोड़ें। लेकिन दुर्भाग्यवश, यदि आप करीब दिखते हैं :

चेतावनी: dom4j 2.0 पूर्व-अल्फा चरण में है। ऐसा लगता है कि यह संकलित नहीं किया जा सकता है। अगर इसे यादृच्छिक रूप से संकलित किया जा सकता है तो यह संभवतः नहीं चल सकता है। अगर यह कभी-कभी चलता रहता है तो यह अचानक अचानक विस्फोट कर सकता है। यदि आप dom4j का उपयोग करना चाहते हैं, तो आप संस्करण 1.6.1 चाहते हैं। वास्तव में।

… और वेबसाइट ने कहा है कि एक लंबे समय के लिए। तो क्या dom4j के लिए एक अच्छा विकल्प है? डंपिंग नाम और लिंक के बजाय कृपया अपनी पसंदीदा लाइब्रेरी के लिए कुछ औचित्य प्रदान करें 🙂

वेब के समाधान से एकत्रित समाधान "जावा एक्सएमएल लाइब्रेरी क्या है (dom4j को बदलने के लिए)?"

ज़रूर, एक्सओएम 🙂

XOM को जानने के लिए आसान और आसान उपयोग के लिए बनाया गया है यह बहुत सीधे-आगे की ओर काम करता है, और एक बहुत उथले सीखने की अवस्था है। मान लें कि आप एक्सएमएल से पहले ही परिचित हैं, आपको उठने और XOM के साथ चलने में सक्षम होना चाहिए।

मैं कई वर्षों के लिए अब XOM का उपयोग करता हूं, और मुझे अभी भी बहुत पसंद है उपयोग करने में आसान, बहुत सारे दस्तावेज और वेब पर आलेख, एपीआई रिलीज के बीच में परिवर्तन नहीं करता है। 1.2 हाल ही में जारी किया गया था।

एक्सओएम एकमात्र XML एपीआई है जो शुद्धता पर कोई समझौता नहीं करता है एक्सओएम केवल नेमस्पेस को अच्छी तरह से बनाए गए XML दस्तावेज़ों को स्वीकार करता है, और केवल आपको नेमस्पेस को अच्छी तरह से बनाए गए XML दस्तावेज़ बनाने की अनुमति देता है। (वास्तव में, यह उस की तुलना में थोड़ा सख्त है: यह वास्तव में गारंटी देता है कि सभी दस्तावेज गोल-ट्रिपेबल हैं और अच्छी तरह से परिभाषित XML infosets हैं।) XOM आपके एक्सएमएल का प्रबंधन करता है ताकि आपको ऐसा करने की आवश्यकता न हो। एक्सओएम के साथ, आप अपने आवेदन के अनूठे मूल्य पर ध्यान केंद्रित कर सकते हैं, और एक्सएमएल पर अधिकार के लिए एक्सएमएल पर भरोसा कर सकते हैं।

पूछे जाने वाले प्रश्न, रसोई की किताब, डिजाइन तर्क, आदि के लिए वेब पेज http://www.xom.nu/ देखें आदि। यदि सबकुछ इतना प्यार से बनाया गया था 🙂

लेखक ने XML के API के साथ गलत क्या है (और उन्हें ठीक कैसे करें) के बारे में भी लिखा है (मूलतः, कारणों की वजह से एक्सओएम पहले स्थान पर मौजूद है)

यहां XOM के बारे में लेखक के साथ यहां 5-भाग आर्टिमा साक्षात्कार भी है, जहां वे XML एपीआई , द गुड, द बैड और डोम , जेडओएम की ए डिजाईन रिव्यू, जेडीओएम से सीखे गए सबक और आखिरकार डिजाइन सिद्धांतों और एक्सओएम के बारे में बात करते हैं ।

कुछ अतिरिक्त के साथ जेडीके में बनाया गया …

हां, यह उपयोग करने के लिए दर्दनाक है: इसे W3C चश्मा के बाद तैयार किया गया है जो कि समिति द्वारा स्पष्ट रूप से डिज़ाइन किया गया था। हालांकि, यह कहीं भी उपलब्ध है, और यदि आप इसे तय करते हैं तो आप "मुझे डोम 4 जे पसंद हैं," "मुझे जेडीएम पसंद है," "स्ट्रिंगबफर" की तरह बहसें हैं जो तीसरे पक्ष के पुस्तकालयों से आती हैं। खासकर जब से ये तर्क विभिन्न पुस्तकालयों का उपयोग करते हुए कोड के विभिन्न टुकड़ों में बदल सकते हैं …

हालांकि, जैसा कि मैंने कहा था, मैं थोड़ा बढ़ाता हूं: प्रैक्टिकल एक्सएमएल पुस्तकालय उपयोगिता वर्गों का एक संग्रह है जो डोम के साथ काम करना आसान बनाता है । XPath आवरण के अलावा, यहां कुछ भी जटिल नहीं है, सिर्फ एक दिनचर्या का एक गुच्छा है जो मैंने खुद को हर नौकरी के लिए पुन: लिखना पाया।

मैं dom4j को बदलने के लिए XMLTool का उपयोग कर रहा हूं और यह बहुत अच्छी तरह से काम कर रहा है।

एक्सएमएल उपकरण एक्सएमएल जोड़तोड़ की सुविधा के लिए धाराप्रवाह इंटरफेस पैटर्न का उपयोग करता है:

 XMLTag tag = XMLDoc.newDocument(false) .addDefaultNamespace("http://www.w3.org/2002/06/xhtml2/") .addNamespace("wicket", "http://wicket.sourceforge.net/wicket-1.0") .addRoot("html") .addTag("wicket:border") .gotoRoot().addTag("head") .addNamespace("other", "http://other-ns.com") .gotoRoot().addTag("other:foo"); System.out.println(tag.toString()); 

यह जावा 5 के लिए बनाया गया है और चयनित तत्वों पर एक पुनरावृत्त ऑब्जेक्ट बनाना आसान है:

 for (XMLTag xmlTag : tag.getChilds()) { System.out.println(xmlTag.getCurrentTagName()); } 

मैं हमेशा जाम पसंद आया इसे डीओएम पार्सिंग से अधिक सहज लिखा गया था (और सैक पार्सिंग हमेशा वैसे भी बेतरतीब लगता है)।

मिशन वक्तव्य से:

एक्सएमएल हेरफेर करने के लिए कॉम्प्लेक्स, पेचकस, अनइन्टीविटिव या गर्दन में दर्द होने के लिए कोई ठोस कारण नहीं है। JDOMTM जावा-केंद्रित और जावा-अनुकूलित दोनों है यह जावा की तरह व्यवहार करता है, यह जावा संग्रह का उपयोग करता है, वर्तमान जावा डेवलपर्स के लिए यह पूरी तरह से प्राकृतिक एपीआई है, और यह एक्सएमएल का इस्तेमाल करने के लिए कम लागत प्रविष्टि बिंदु प्रदान करता है।

यह बहुत ज्यादा मेरा अनुभव रहा है – नोड पेड़ के काफी सहज ज्ञान युक्त नेविगेशन

मैं XStream का उपयोग करता हूं, यह एक साधारण लाइब्रेरी है जो ऑब्जेक्ट को एक्सएमएल को सीरियलाइज़ करे और फिर से वापस।

यह एनोटेशन-चालित (जेएएएसबी) की तरह हो सकता है, लेकिन इसमें एपीआई का इस्तेमाल करना आसान और आसान है और आप जेएसओएन भी जेनरेट कर सकते हैं।

मैं @kdgregory द्वारा निर्मित जवाब में यह कहकर जोड़ूंगा कि क्यों नहीं JAXB?

कुछ एनोटेशन के साथ सबसे ज्यादा एक्सएमएल दस्तावेजों का मॉडल आसान है मेरा मतलब है कि आप संभवतः सामान को पार्स करने के लिए और किसी ऑब्जेक्ट में सही डाल देंगे?

JAXB 2.0 जेडीके 1.6 में बनाया गया है और कई अन्य बिल्टिन जावाएक्स पुस्तकालयों के विपरीत यह एक बहुत अच्छा है (कोहूसुके पर काम किया ताकि आप इसका अच्छा पता कर सकें)।

हाल ही के एक प्रोजेक्ट में मुझे कुछ एक्सएमएल पार्सिंग करना था, और एक सहकर्मी द्वारा सिफारिश की गई सरल फ़्रेमवर्क का उपयोग करना समाप्त हो गया।

मैं इसके अंत में बहुत खुश था यह मानचित्रण XML तत्वों और जावा वर्गों और क्षेत्रों के गुणों के एक एनोटेशन-आधारित दृष्टिकोण का उपयोग करता है

 <example> <a> <b> <x>foo</x> </b> <b> <y>bar</y> </b> </a> </example> 

अनुरूप जावा कोड:

 @Root public class Example { @Path("a/b[1]") @Element private String x; @Path("a/b[2]") @Element private String y; } 

यह सब dom4j या XOM से काफी अलग है आप मूर्खतापूर्ण, बॉयलरप्टीएम एक्सएमएल हैंडलिंग कोड लिखने से बचें, लेकिन सबसे पहले आप वाक्यों को सही करने के लिए थोड़ी देर के लिए दीवार के खिलाफ अपना सिर धकेल लेंगे।

(यह मुझे था, जिन्होंने 4 साल पहले यह प्रश्न पूछा था। जबकि एक्सओएम एक सभ्य और काफी लोकप्रिय डोमेन 4 जी प्रतिस्थापन लगता है, मैं पूरी तरह से इसे गले नहीं आ रहा हूं। उत्सुक है कि कोई भी यहां साधारण फ़्रेमवर्क का उल्लेख नहीं कर रहा था। मैंने तय किया कि, जैसा कि मैं शायद इसका दोबारा इस्तेमाल करूँगा।)

हमारी परियोजना में हम http://www.castor.org/ का उपयोग कर रहे हैं लेकिन केवल छोटे XML फ़ाइलों के लिए यह जानने के लिए वास्तव में आसान है, सिर्फ एक मानचित्रण XML फ़ाइल की आवश्यकता होती है (या कोई भी नहीं अगर XML टैग पूरी तरह क्लास गुणों से मेल खाता हो) और यह हो गया है। यह अतिरिक्त संसाधन करने के लिए श्रोताओं (जैसे कॉलबैक) का समर्थन करता है। विपक्ष: यह एक जावा ईई मानक नहीं है जैसे कि JAXB

आप जेएएनएसबी की कोशिश कर सकते हैं, एनोटेशन के साथ यह बहुत आसान और आसान है: XML बाध्यकारी के लिए जावा वास्तुकला।

मैं कभी-कभी जेरिको का उपयोग कर रहा हूं, जो मुख्य रूप से एचटीएमएल पार्सर है, लेकिन किसी एक्सएमएल की संरचना को पार्स कर सकता है।

बेशक यह केवल सरल एक्सएमएल कार्यों के लिए है, जैसे दिए गए नाम के साथ टैग खोजना, संरचना के माध्यम से चलना, टैग और इसके विशेषताओं को बदलना, लेकिन यह सबसे अधिक उपयोग के मामलों में नहीं है?

XML documetns के निर्माण के लिए, मैं सुझाव देता हूँ xmlenc यह कैसंड्रा में प्रयोग किया जाता है