Tôi dường như không hiểu mục đích của XMLString::transcode(XMLCh*)
và XMLString::transcode(char*)
, bởi vì rõ ràng là tôi không hiểu sự khác biệt giữa XMLCh*
và char*
. Ai đó có thể làm cho mọi thứ rõ ràng hơn cho tôi không?Mục đích của XMLString :: transcode
Trả lời
Xerces mã hóa thông tin dưới dạng UTF-16 trong nội bộ. Dữ liệu UTF-16 được lưu trữ bằng kiểu dữ liệu XMLCh
.
'Chuỗi kiểu C' sử dụng char
nằm trong trang mã cục bộ (có thể là UTF-8, nhưng tùy thuộc vào nền tảng và cài đặt) Bạn sử dụng transcode
để chuyển đổi giữa hai loại.
Ví dụ: nếu bạn muốn cấp một số dữ liệu từ Xerces vào thư viện khác và thư viện đó dự kiến văn bản trong trang mã cục bộ, bạn cần phải transcode
nó. Ngoài ra, nếu bạn có char
dữ liệu và muốn cấp dữ liệu cho Xerces, bạn cần phải transcode
nó đến XMLCh
, bởi vì đó là những gì Xerces hiểu.
Ví dụ:
// to local code page
DOMNode *node = ...;
char* temp = XMLString::transcode(node->getNodeValue());
std::string value(temp);
XMLString::release(&temp);
// from local code page
DOMElement *element = ...;
XMLCh *tag = XMLString::transcode("test");
DOMNodeList *list = element->getElementsByTagName(tag);
XMLString::release(&tag);
Đừng quên để giải phóng chuỗi! Tốt hơn là viết một số wrapper vòng nó nhưng có examples có sẵn trên internet (chỉ cần tìm kiếm một lớp có tên XercesString
).
Nếu bạn muốn biết thêm về mã hóa, tôi nghĩ bạn nên đọc The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
- 1. Mục đích của ActionName
- 2. Mục đích của \ e
- 3. Mục đích của Ext.require
- 4. Mục đích của Mage_Core_Block_Template_Facade
- 5. Mục đích của IEnumerator
- 6. Mục đích của Monitor.Pulse
- 7. Mục đích của Python __repr__
- 8. Mục đích Android của Facebook
- 9. mục đích của glClear (GL_DEPTH_BUFFER_BIT)
- 10. Mục đích của /var/resource_config.json
- 11. Mục đích của thuộc tính-đích là gì?
- 12. Mục đích của thư mục buildSrc của gradle là gì?
- 13. Mục đích của phiên JMS là gì?
- 14. Mục đích của bài tập đơn
- 15. Mục đích của CXF hoặc Spring WS
- 16. Mục đích của config.assets.precompile là gì?
- 17. Mục đích của HttpHeaders.TryAddWithoutValidation là gì?
- 18. Mục đích của nguyên mẫu là gì?
- 19. Mục đích của is_uploaded_file() là gì?
- 20. Mục đích của tệp vshost.exe là gì?
- 21. VBScript, mục đích của đại tràng?
- 22. Mục đích của Console.WriteLine() trong Winforms
- 23. Mục đích của tài sản trên UIWebView
- 24. Mục đích của Parse Vexing là gì?
- 25. Mục đích của việc sử dụng CommandType.Tabledirect
- 26. Mục đích của Array.GetLowerBound (int) là gì?
- 27. Mục đích của tệp pdb là gì?
- 28. Mục đích của biểu tượng Scala?
- 29. Mục đích của String.IsInterned là gì?
- 30. Mục đích của ldexp là gì?
cảm ơn điều đó thực sự hữu ích! – Glolita
Việc thêm một vài dòng mã làm ví dụ sẽ giúp ích rất nhiều cho những độc giả khác như tôi! – Jaywalker