আমার কাছে কয়েকটি দম্পতি (20) এসভিজি-ফন্ট (এক্সএমএল ভিত্তিক ফন্ট ফর্ম্যাট) রয়েছে, তাদের প্রতিটি গড়ে প্রায় 300kb এবং প্রায় 100 গ্লাইফ-ট্যাগ রয়েছে। আমি প্রতিটি গ্লাইফ ইনসকেপ দিয়ে প্রক্রিয়া করতে চাই। এক্সওএমএল-প্রক্রিয়াকরণের অংশটি আমি পাওয়ারশেল স্ক্রিপ্টের সাথে করতে চাই:
- এক্সএমএল হিসাবে ফন্টটি খুলুন
- প্রতিটি গ্লাইফের উপরে ইটারেট করুন, একটি অ্যাট্রিবিউটের মানটি ধরুন এবং এই মানটির সাথে একটি টেম্পার এসভিজি (এক্সএমএল) পরামিতি সংরক্ষণ করুন
- ইনসকেপ দিয়ে এই ফাইলটি প্রক্রিয়া করুন
- এই ফাইলগুলির প্রতিটি পড়ুন
- নতুন ডেটা দিয়ে একটি নতুন ফন্ট-ফাইল তৈরি করুন
- ফন্ট সংরক্ষণ করুন, গ্লাইফ মুছুন
আমি প্রচুর পাওয়ারশেল এক্সএমএল টিউটোরিয়াল পড়েছি এবং কয়েকবার চেষ্টা করেছি এবং একটি জিনিস আছে যা আমি জানি না কী ভুল তা নয়, তবে আমি এই লাইনটির সাথে ফন্ট থেকে প্রতিটি গ্লাইফ পাচ্ছি:
$nodes = Select-Xml -Content $( Get-Content -Path $_.FullName ) -XPath "//glyph" -Namespace $namespaces
অনেক সময় প্রয়োজন এবং 60 গ্লিফ বিতরণ করে, যদি ফন্টে আরও থাকে তবে। স্ক্রিপ্টের বাকী সমস্ত অংশ সঠিকভাবে কাজ করছে, তবে আমি যদি সমস্ত 20 ফন্টগুলি প্রসেস করতে চাইছি (ভবিষ্যতে আরও হবে) এটি পুরো দিন সময় নেয় এবং সমস্ত গ্লাইফগুলি প্রক্রিয়াভুক্ত হয় না।
সুতরাং, ফাইলটি পড়ার এবং এক্সএমএল বিশ্লেষণে কোনও ব্যর্থতা আছে কি? কেন এটি এত অবিশ্বাস্যরূপে ধীর হয় এবং সমস্ত গ্লাইফগুলি প্রক্রিয়াজাত হয় না কেন?