Private/Add-XmlChildElement.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using namespace System.Xml

<#
.SYNOPSIS
Short description

.DESCRIPTION
Long description

.PARAMETER Parent
Parameter description

.PARAMETER Name
Parameter description

.PARAMETER InnerText
Parameter description

.PARAMETER NamespaceUri
Parameter description

.PARAMETER PassThru
Parameter description

.EXAMPLE
An example

.NOTES
General notes
#>


function Add-XmlChildElement {
    [CmdletBinding()]
    [OutputType($null, [XmlElement])]
    param (
        [Parameter(
            Mandatory = $true,
            Position = 0
        )]
        [XmlElement] $Parent,

        [Parameter(
            Mandatory = $true,
            Position = 1
        )]
        [string] $Name,

        [Parameter(
            Position = 2
        )]
        [string] $InnerText,

        [string] $NamespaceUri,

        [switch] $PassThru
    )
    if (!$NamespaceUri) {
        $NamespaceUri = $Parent.NamespaceURI
    }
    $child = $Parent.OwnerDocument.CreateElement($Name, $NamespaceUri)
    if ($InnerText) {
        $child.InnerText = $InnerText
    }
    $Parent.AppendChild($child) | Out-Null
    if ($PassThru) {
        $child
    }
}