<?xml version="1.0" encoding="utf-8"?>
<Test1>
  <Test1Properties>
    <Property1>replace this</Property1>
  </Test1Properties>
  <Test1Sources>
    <Source1>
      <SourceReference>sourceref</SourceReference>
      <SourceType>None</SourceType>
    </Source1>
    <Source2>
      <Source2Properties>
        <Provider>prov</Provider>
        <ProviderKey>some-guid</ProviderKey>
      </Source2Properties>
    </Source2>
  </Test1Sources>
</Test1>

उपरोक्त एक्सएमएल को देखते हुए, पावरहेल में 3 कार्य हैं जिन्हें मुझे पूरा करने की आवश्यकता है:

  1. के मान को नए मान से बदलें
  2. सत्यापित करें कि मान = कोई नहीं
  3. कैसे निर्धारित करें कि में मौजूद है या नहीं

मुझे लगता है कि एक एक्सएमएल वैरिएबल में पढ़ना शुरू करने का सबसे अच्छा तरीका है? पसंद:

[xml]$xmlAttr = Get-Content -Path TestFile.xml

मैं शायद ही एक्सएमएल के साथ पावरहेल का बहुत कम उपयोग करता हूं, इसलिए उम्मीद है कि ये काफी सीधे पूछे जाते हैं। अग्रिम में धन्यवाद।

0
Mike 4 फरवरी 2021, 22:10

1 उत्तर

सबसे बढ़िया उत्तर

अपने XML डेटा को कैसे प्रबंधित करें, इसके कुछ उदाहरण निम्नलिखित हैं:

# Deserialize the XML text Option 1.
# This is syntactically simpler but is susceptible to encoding issues.
[xml]$xml = Get-Content -Path TestFile.xml

# Deserialize the XML text Option 2. Must use full path in Load method.
$xml = [xml]::new()
$xml.Load('C:\Temp\TestFile.xml')

# Update Node Property1 value
$xml.Test1.Test1Properties.Property1 = 'new value'

# Return True if SourceType node has value of None
$xml.Test1.Test1Sources.Source1.SourceType -ceq 'None'

# Return True if Source2Properties Exists as a child node of Source2
$xml.SelectSingleNode("//Test1/Test1Sources/Source2/Source2Properties") -is [System.Xml.XmlElement]

# Save results in your xml file. Must use a full path in Save() method.
$xml.Save('C:\temp\TestFile.xml')
2
mklement0 5 फरवरी 2021, 01:21
संक्षिप्त, कुशल, अच्छी तरह से प्रलेखित उत्तर में आवश्यक सब कुछ। बहुत बहुत धन्यवाद!
 – 
Mike
5 फरवरी 2021, 03:44