এক্সএনএ-তে কীভাবে এক্সএমএল ফাইলগুলি সামগ্রী ফাইল হিসাবে ব্যবহার করবেন?


9

আমার কাছে একটি এক্সএমএল ফাইল রয়েছে যা বিভিন্ন গাড়ি উত্পাদনকে উপস্থাপন করে যা আমার গেমটিতে উপলব্ধ। ফাইলটি দেখতে এমন দেখাচ্ছে:

<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="List[string]">
    <car>Audi</car>
    <car>BMW</car>
    <car>Nissan</car>
    <car>Volvo</car>
  </Asset>
</XnaContent>

এটি আমার সামগ্রী ফোল্ডারে যুক্ত করার সময়, সংকলকটি এই ত্রুটিটি ফিরিয়ে দেয়:

There was an error while deserializing intermediate XML. Cannot find type "List`1"

আমি কীভাবে স্ট্রিংগুলির একটি তালিকা তৈরি করতে পারি, এটি এক্সএমএলে রেখে এক্সএনএ থেকে পড়তে পারি?


আপনার ডিসিরিয়ালাইজিং কোডটি এখানে কার্যকর হবে।
টেট্রাড

3
আমার কোনও ডিসিরিয়ালাইজিং কোড নেই। আমার সমস্যাটি এখানেই শুরু হতে পারে?
eflles

3
টেট্রাডের প্রশ্নের উত্তর দেওয়ার জন্য: সম্ভবত এক্সফলস XmlImporterএক্সএনএ কনটেন্ট পাইপলাইনের অংশটি ব্যবহার করছে । পাইপলাইনটি এক্সএমবিটিকে একটি এক্সএনবি ফাইলে রূপান্তর করতে (যা তখন ContentManagerরানটাইমের সময় লোড করা হবে) ডেসিরিয়াল করে ।
অ্যান্ড্রু রাসেল

উত্তর:


14

আপনার এক্সএমএলটির সাথে ঠিক কী কী তা আমি খুঁজে বের করার চেষ্টা করিনি - এটি সম্ভবত কোনও নামের জায়গার অভাব। তবে এখানে সঠিক এক্সএমএল:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Generic="System.Collections.Generic">
  <Asset Type="Generic:List[string]">
    <Item>Audi</Item>
    <Item>BMW</Item>
    <Item>Nissan</Item>
    <Item>Volvo</Item>
  </Asset>
</XnaContent>

ফণা অধীনে ক্লাস XmlImporterব্যবহার করে IntermediateSerializer। তাই নিচের মত একটি ছোট প্রোগ্রাম কোনটি আপনার XML ব্যবহার করা যেতে পারে উচিত মত চেহারা:

var test = new List<string>(){ "Audi", "BMW", "Nissan", "Volvo" };
var sb = new StringBuilder();
using(XmlWriter writer = XmlWriter.Create(sb))
{
    IntermediateSerializer.Serialize(writer, test, null);
}
Console.Write(sb.ToString());

(আপনি এমনকি আউটপুটটিকে একটি স্ট্রিমে রূপান্তর করতে পারেন, এটি Deserializeপদ্ধতিতে পাস করতে এবং অবজেক্টটি পুনর্গঠন করতে পারেন - এটি দ্বিগুণ-নিশ্চিত হয়ে কাজ করছে যে এটি কাজ করছে probably এছাড়াও এটি সম্ভবত শিরোনামে ডান এনকোডিং রাখার পক্ষে মূল্যবান - যেমন: StringBuilderutf-16 ।)

সম্পর্কে কিছু গভীরতর তথ্যের জন্য IntermediateSerializer, শন হারগ্রায়েভস ব্লগটি একবার দেখুন, এই পোস্টটি দিয়ে শুরু করে এবং সংরক্ষণাগার মাধ্যমে আগস্ট ২০০৮ পর্যন্ত চালিয়ে যান।


1
এটি সম্পর্কে +1 শন হারগ্রিভসের পোস্টের সিরিজ দুর্দান্ত। আপনার এক্সএমএল উত্পন্ন করার সহজতম উপায় হ'ল একটি "লেভেলএডিটর" প্রকল্প যা একই কোড রয়েছে তবে কনটেন্ট পাইপলাইন সমাবেশগুলি উল্লেখ করে যাতে আপনি কোডগুলিতে ডিফল্ট বৈশিষ্ট্য সহ আপনার বিষয়গুলি তৈরি করতে পারেন এবং তারপরে আপনার আসলটিতে লোড করার জন্য সেগুলিকে এক্সএমএল এ সিরিয়ালাইজ করতে পারেন can গেম প্রকল্প
michael.bartnett

0

আপনি যদি কোড উদাহরণের মাধ্যমে এটি কীভাবে দেখতে চান তা এখানে একটি নমুনা যা আপনার মত xML ব্যবহার করে http://create.msdn.com/en-US/education/catalog/sample/collision

আপনি কী চলছে তা ব্যাখ্যা করে নিবন্ধগুলি পড়তে চান এবং এক্সএমএল এবং সামগ্রী প্রসেসরের সাথে কীভাবে কাজ করবেন সে সম্পর্কে অন্তর্দৃষ্টি পেতে চান তবে এই লিঙ্কটিতে যান, ইন্টারমিডিয়েট সিরিয়ালাইজার বিভাগে স্ক্রোল করুন এবং সেখানে 8 বা 9 নিবন্ধগুলি পড়ুন। http://www.talula.demon.co.uk/blogindex.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.