কীভাবে এক্সএমএল ফাইলগুলিতে পাওয়ারশেল ব্যবহার করে সংশোধন / মান তৈরি করবেন?


24

আমি জানতে চাই যে পাওয়ারশেল ব্যবহার করে এক্সএমএল ফাইলগুলিতে মান পরিবর্তন / তৈরি করা সম্ভব কিনা। মূলত আমি আগ্রহী:

  • এক্সএমএল ফাইলে মানগুলি সংশোধন করুন বা সেগুলি উপস্থিত না থাকলে সেগুলি তৈরি করুন (অর্থাত আমার আইটেমটি সন্ধান করা প্রয়োজন, বিদ্যমান না থাকলে তৈরি করুন এবং মানটি সংশোধন করুন)
  • সেইগুলির মতো একই এক্সএমএল ফাইলে বিভিন্ন এক্সএমএল সিনট্যাক্সের সাথে ডিল করুন:

সিনট্যাক্স 1:

<সেটিংস>
  <সেটিং আইডি = "লোকেশন 2" মান = "বার্সেলোনা, স্পেন" />
  <সেটিং আইডি = "অবস্থান2id" মান = "zmw: 00000.1.08181" /> 18
</ সেটিংস>

সিনট্যাক্স 2:

<সেটিংস>
    <Musicplayer>
        <ক্রসফেড> 0 </ ক্রসফেড>
        <Queuebydefault> মিথ্যা </ queuebydefault>
    </ Musicplayer>
</ সেটিংস>

সিনট্যাক্স 3:

<সেটিংস>
    <Skinsettings>
        <সেটিং টাইপ = "বুল" নাম = "স্কিন কোডফ্লুয়েন্স ome হোমপেজহাইড্রিটালি অ্যাডভাইডভিডিও"> ভুয়া </ সেটিং>
    </ Skinsettings>
</ সেটিংস>

কোন সাহায্য খুব প্রশংসা করা হবে।

ধন্যবাদ।

উত্তর:


36

পাওয়ারশেল এক্সএমএল ফাইলগুলি মোকাবেলায় সম্পূর্ণ সমর্থন করে।

উদাহরণস্বরূপ, আমরা যদি আপনার সরবরাহিত প্রথম ব্লার্বটি গ্রহণ করি এবং এটি কেবলমাত্র settings.xml"সি: lah ব্লাহ" ফোল্ডার নামক একটি এক্সএমএল ফাইলে আটকান , আপনি প্রতিটি সেটিংয়ের আইডি পেতে পারেন:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.setting.id

যা ফেরত:

Location2
Location2id

এবং

$myXML.settings.setting.value

আয়:

Barcelona, Spain
zmw:00000.1.08181

যদি আমরা সিন্ট্যাক্স # 2 এ সরবরাহ করা ব্লার্বের সাথে XML ফাইলের সামগ্রীগুলি প্রতিস্থাপন করি:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade

আয়:

0

পড়তে crossfade, এটিকে পরিবর্তন করুন (2) এবং ফিরে সংরক্ষণ করুন:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade = 2
$myXML.Save("C:\blah\settings.xml")

মন্তব্যের পরে সম্পাদনা করুন:

এক্সএমএল উপাদানগুলি নিজেরাই পরিবর্তন করতে (বার্সেলোনার উদাহরণ হিসাবে) কিছুটা কৌশলযুক্ত কারণ আপনি নিজেই এক্সএমএল কাঠামো সম্পাদনা করছেন, এতে থাকা ডেটা নয়।

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.ChildNodes.Item(0).value = "New York, USA"
$myXML.Save("C:\blah\settings.xml")

স্কিনসেটেটিং উদাহরণের জন্য, এর মতো কিছু চেষ্টা করুন:

$myXML.settings.skinsettings.setting."#text" = "true"

এই সংস্থানগুলি দেখুন:


উত্তরের জন্য ধন্যবাদ. আমি আপনার পরামর্শগুলি পড়েছি এবং বার্সেলোনা থেকে নিউইয়র্কে কোনও সফলতা ছাড়াই প্রথম ব্লবটিতে id = "লোকেশন 2" এর মান আপডেট করার চেষ্টা করছি। তৃতীয় ব্লবের সাথে একই ("সত্য" তে পরিবর্তনের চেষ্টা করা)। আমি এই জাতীয় মানগুলি কীভাবে সন্ধান / পরিবর্তন করতে পারি?
সেরিওফিলো

আমি নিম্নলিখিতটি ব্যবহার করে যে নোডটি পরিবর্তন করতে চাই তা নির্বাচন করার চেষ্টা করছি $MyXML.SelectSingleNode("/settings/skinsettings/setting[@type='bool' and @name='skin.confluence.HomepageHideRecentlyAddedVideo']")তবে, কীভাবে আমি "মিথ্যা" থেকে "সত্য" তে মান পরিবর্তন করতে পারি। বা যদি এটির উপস্থিতি না থাকে তবে আমি কীভাবে এটির মতো নোড তৈরি করতে পারি?
সেরিওফিলো

1
আমার সম্পাদনা দেখুন। আমি আরও কিছু তথ্য যুক্ত করেছি। :)
4cʜιᴇ007
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.