Khi sử dụng SAX để phân tích cú pháp tệp XML trong Java, sự khác nhau giữa các tham số tên địa phương và qname trong các phương thức SAX như startElement(String uri, String localName,String qName, Attributes attributes)
?Sự khác biệt giữa localname và qname là gì?
Trả lời
Theo mặc định, trình đọc XML sẽ báo cáo URI không gian tên và tên cục bộ cho mỗi phần tử nằm trong vùng tên, trong cả trình xử lý bắt đầu và kết thúc.
Hãy xem xét ví dụ sau:
<html:hr xmlns:html="http://www.w3.org/1999/xhtml"/>
Với việc xử lý Namespace sax2 mặc định, người đọc XML sẽ báo cáo một sự kiện bắt đầu và kết thúc phần tử với các không gian tên URI http://www.w3.org/1999/xhtml và hr localName. Hầu hết các triển khai XMLReader cũng báo cáo qName html ban đầu: hr, nhưng tham số đó có thể chỉ đơn giản là một chuỗi rỗng (ngoại trừ các phần tử không nằm trong không gian tên).
Nói chung, tên địa phương là tên địa phương, có nghĩa là bên trong không gian tên. qname, hoặc tên đủ điều kiện, là tên đầy đủ (bao gồm cả không gian tên). Ví dụ: < a: b…> sẽ có tên địa phương b, nhưng a aname a: b.
Điều này tuy nhiên rất chung chung và phụ thuộc vào cài đặt. Hãy xem ví dụ ở cuối trang này để có ví dụ hoàn chỉnh hơn: example
+1 cho liên kết ví dụ. – Kowser
Tên đủ điều kiện bao gồm cả tiền tố không gian tên và tên địa phương: att1
và foo:att2
.
mẫu XML
<root
xmlns="http://www.example.com/DEFAULT"
att1="Hello"
xmlns:foo="http://www.example.com/FOO"
foo:att2="World"/>
Mã Java:
att1
Thuộc tính mà không có một tiền tố namespace không nhận không gian tên mặc định. Điều này có nghĩa là khi không gian tên cho phần tử root
là "http://www.example.com/DEFAULT"
, không gian tên cho thuộc tính att1
là ""
.
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"
- 1. Sự khác biệt giữa JavaBean và POJO là gì?
- 2. Sự khác biệt giữa betweeen% INC và @INC là gì?
- 3. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 4. Sự khác biệt giữa RoutedCommand và RoutedUICommand là gì?
- 5. Sự khác biệt chính giữa Sinatra và Ramaze là gì?
- 6. Sự khác biệt giữa DBI và DBD là gì?
- 7. Sự khác biệt giữa NSInvocation và chặn là gì?
- 8. Sự khác biệt giữa fn và fn * là gì?
- 9. Sự khác biệt giữa xtype và bí danh là gì?
- 10. Sự khác biệt giữa build.sbt và build.scala là gì?
- 11. Sự khác biệt giữa Application.ThreadException và AppDomain.CurrentDomain.UnhandledException là gì?
- 12. Sự khác biệt giữa while (true) và loop là gì?
- 13. Sự khác biệt giữa dealloc và viewdidunload là gì?
- 14. Sự khác biệt giữa uint và System.UInt32 là gì?
- 15. Sự khác biệt giữa heuristic và thuật toán là gì?
- 16. Sự khác biệt giữa decodeURIComponent và decodeURI là gì?
- 17. Sự khác biệt giữa \ r và \ n là gì?
- 18. Sự khác biệt giữa phần .got và .got.plt là gì?
- 19. Sự khác biệt giữa ascx và .cshtml là gì?
- 20. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 21. Sự khác biệt giữa Thông báo và pynotify là gì?
- 22. Sự khác biệt giữa to_a và to_ary là gì?
- 23. sự khác biệt giữa callback là gì và hứa
- 24. Sự khác biệt giữa Request.ServerVariables ["REMOTE_ADDR"] và Request.UserHostAddress là gì?
- 25. Sự khác biệt giữa .closest() và .parents ('selector') là gì?
- 26. Sự khác biệt giữa isset và empty là gì?
- 27. Sự khác biệt giữa mẫu và đường dẫn là gì?
- 28. Sự khác biệt giữa "gọi" và "gọi" là gì?
- 29. Sự khác biệt giữa khẳng định và static_assert là gì?
- 30. Sự khác biệt giữa Phiên và Cookie là gì?
Hỏi: QName sẽ là tiền tố + ':' + tên địa phương, hoặc nó sẽ là '{' + namespace URI + '}' + tên địa phương? Giống như vậy: '{http://www.w3.org/1999/xhtml} hr'. Bởi vì một tiền tố liên kết một phần tử với một không gian tên, nhưng chuỗi thực tế của nó không quan trọng. Đủ điều kiện = không gian tên và tên địa phương. –
Nó sẽ là 'tiền tố +": "+ tên địa phương". (Nhưng bạn có thể thấy điều đó bằng cách nhìn vào Javadoc, hoặc trong đầu ra của trình phân tích cú pháp - tại sao bạn hỏi ở đây?) –