【问题标题】:problem with .Net xml importnode.Net xml importnode 的问题
【发布时间】:2010-11-16 16:37:28
【问题描述】:

我正在尝试构建一个使用一些 XML 的 powershell 脚本。我有一个 XML 文档,我尝试在其中添加一些带有电子邮件地址的值。完成的 xml 文档应具有以下格式: (我这里只展示xml的相关部分)

<emailAddresses> 
    <value>bob@bob.com</value> 
    <value>kenny@bob.com</value> 
    <value>roger@bob.com</value> 
</emailAddresses> 

所以,在 powershell 中我尝试将其作为测试,但失败了:

$newNumber = [xml] '<value>555-1215</value>'
$newNode = $Request2.ImportNode($newNumber.value, $true)
$emailnode.AppendChild($newNode)

经过一番阅读,我发现如果我这样做,它会成功:

$newNumber = [xml] '<value name="flubber">555-1215</value>'
$newNode = $Request2.ImportNode($newNumber.value, $true)
$emailnode.AppendChild($newNode)

所以,我被困住了。当我有几个名称相同但值不同的键时,我开始怀疑是否应该使用另一个函数而不是 importnode。

你们现在可能已经明白了,我不是 xml 方面的专家。任何帮助表示赞赏!

【问题讨论】:

    标签: .net xml powershell


    【解决方案1】:

    正如您所指出的,有些 XML 片段已被排除在外,因此我构建了自己的演绎版,希望能够适应 现实世界 版本。

    首先...

    $newNumber.value
    

    ... 是字符串类型。 ImportNode() 需要一个 XmlNode 类型作为第一个参数。为此,您可能可以调用类似get_DocumentElement() 和/或SelectSingleNode() 的函数。

    例如:

    $Request2 = [xml]'<root><emailAddresses/></root>'
    $newNumber = [xml]'<value>555-1215</value>'
    $newNode = $Request2.ImportNode( $newNumber.get_DocumentElement(), $true )
    $Request2.get_DocumentElement().SelectSingleNode( './emailAddresses' ).AppendChild( $newNode )
    

    这应该会呈现您正在寻找的结果。

    【讨论】:

      【解决方案2】:

      试试这个方法:

      PS> $xml = [xml]'<addresses/>'
      PS> $newNode = $xml.CreateElement('value')
      PS> $newNode.InnerText = 'bob@bob.com'
      PS> $xml.DocumentElement.AppendChild($newNode) > $null
      PS> $newNode = $xml.CreateElement('value')
      PS> $newNode.InnerText = 'johnny@bob.com'
      PS> $xml.DocumentElement.AppendChild($newNode) > $null
      PS> $xml.DocumentElement.OuterXml
      <addresses><value>bob@bob.com</value><value>johnny@bob.com</value></addresses>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        相关资源
        最近更新 更多