2011-08-23 12 views
26

SAX का उपयोग करते समय जावा में एक एक्सएमएल फ़ाइल को पार्स करने, क्या मापदंडों localname और इस तरह के रूप में startElement(String uri, String localName,String qName, Attributes attributes) SAX तरीकों में QName के बीच का अंतर है?स्थानीय नाम और qname के बीच क्या अंतर है?

उत्तर

0

डिफ़ॉल्ट रूप से, एक एक्सएमएल रीडर एक नामस्थान में प्रत्येक तत्व के लिए नामस्थान यूआरआई और स्थानीय नाम की रिपोर्ट करेगा, जो स्टार्ट एंड एंड हैंडलर दोनों में नामस्थान में है।

<html:hr xmlns:html="http://www.w3.org/1999/xhtml"/> 
डिफ़ॉल्ट Sax2 नामस्थान प्रसंस्करण के साथ

, एक्सएमएल पाठक नाम स्थान यूआरआई http://www.w3.org/1999/xhtml और localName घंटे के साथ प्रारंभ और समाप्ति तत्व घटना रिपोर्ट करेंगे:

निम्न उदाहरण पर विचार करें। अधिकांश XMLReader कार्यान्वयन भी मूल qName html की रिपोर्ट करते हैं: घंटा, लेकिन वह पैरामीटर बस एक खाली स्ट्रिंग हो सकता है (उन तत्वों को छोड़कर जो नामस्थान में नहीं हैं)।

http://www.saxproject.org/namespaces.html

+0

प्रश्न: ':' QName उपसर्ग + हो जाएगा + स्थानीय नाम या उसका हो जाएगा '{' + नाम स्थान यूआरआई + '}' + स्थानीय नाम? इस तरह: '{http://www.w3.org/1999/xhtml} घंटा'। चूंकि एक उपसर्ग किसी नामस्थान के लिए तत्व को बांधता है, लेकिन इसकी वास्तविक स्ट्रिंग का कोई महत्व नहीं होना चाहिए। योग्य = नामस्थान और स्थानीय नाम। –

+1

यह 'उपसर्ग +' होगा: "+ स्थानीय नाम'। (लेकिन आप इसे जावाडोक में देखकर, या एक पार्सर के आउटपुट में देख सकते हैं - उदाहरण के लिंक के लिए आप यहां क्यों पूछते हैं?) –

12

सामान्य शब्दों में, localname, स्थानीय नाम है नाम स्थान के अंदर अर्थ। qname, या योग्य नाम, पूरा नाम है (नामस्थान सहित)। उदाहरण के लिए, < ए: बी ...> का स्थानीय नाम बी होगा, लेकिन एक qname a: b।

हालांकि यह बहुत सामान्य है, और सेटिंग-निर्भर है। अधिक विस्तृत रूप से उदाहरण के लिए इस पृष्ठ के अंत में उदाहरण पर एक नज़र डालें: att1 और foo:att2: example

+0

+1। – Kowser

42

योग्य नाम दोनों नामस्थान उपसर्ग और स्थानीय नाम भी शामिल है।

नमूना XML

<root 
    xmlns="http://www.example.com/DEFAULT" 
    att1="Hello" 
    xmlns:foo="http://www.example.com/FOO" 
    foo:att2="World"/> 

जावा कोड: एक नामस्थान उपसर्ग डिफ़ॉल्ट नाम स्थान लेने नहीं है बिना

att1

गुण। इसका मतलब है कि root तत्व के लिए नामस्थान "http://www.example.com/DEFAULT" है, att1 विशेषता के लिए नामस्थान "" है।

int att1Index = attributes.getIndex("", "att1"); 
attributes.getLocalName(att1Index); // returns "att1" 
attributes.getQName(att1Index); // returns "att1" 
attributes.getURI(att1Index); // returns "" 

att2

int att2Index = attributes.getIndex("http://www.example.com/FOO", "att2"); 
attributes.getLocalName(att2Index); // returns "att2" 
attributes.getQName(att2Index); // returns "foo:att2" 
attributes.getURI(att2Index); // returns "http://www.example.com/FOO" 
संबंधित मुद्दे