Powershell无法设置xmlelement的内部文本

问题描述 投票:3回答:2

[我试图制作一个可以在共享点中更新Web部件的脚本,我找到了一些示例,但是xml存在问题,我必须将其传递给Web部件。

仅作说明,我使用的PowerShell是1.0。

$xmlDoc = New-Object xml;                
$newXmlElement = $xmlDoc.CreateElement("HtmlContent");       
$newXmlElement.InnerText="SomeValue";

所以这段脚本在哪里中断,我收到一条错误消息:

在该对象上找不到属性'InnerText';确保它存在并且可以设置。

我真的不知道为什么它不起作用,有人知道吗?

我尝试在Windows Powershell comman行中执行此行,并且当我尝试设置innertext时,它将向我抛出此红色错误消息。

xml powershell sharepoint-2007
2个回答
2
投票

我终于找到了一种方法,似乎在PowerShell v1.0中,对象System.Xml.XmlElement没有像InnerText等这样的属性,所以我的方法如下:

 $xmlDoc=New-Object System.Xml.XmlDocument;             
 $xmlElement=$xmlDoc.CreateElement("HtmlElement"); 
 $xmlText = $xmlDoc.CreateTextNode($cewpNewContent)
 $xmlElement.AppendChild($xmlText);

我希望这对其他人可能有用。


0
投票

[尝试使用点表示法将值分配给现有元素时遇到的错误是因为点标记法访问您所使用的XmlElement中的XmlNodeXmlElement没有InnerText,而XmlNode有。

有关如何使用InnerText创建和分配值的示例

$xmlDoc = New-Object xml;
$newXmlElement = $xmlDoc.CreateNode("element", "HtmlContent", "")
$newXmlElement.InnerText = "SomeValue"

$secondXmlElement = $xmlDoc.CreateNode("element", "HtmlContentChild", "")
$secondXmlElement.InnerText = "NewValue"

$newXmlElement.AppendChild($secondXmlElement)
$xmlDoc.AppendChild($newXmlElement)


循环和节点访问的示例

foreach($node in $nodes) {
  if ($node.element -ne $null) {
    $node.element.InnerText = "this will throw error" # generates the error
    $node.element = "this is correct"                 # Correct way to add InnerText
  }
  else { 
    $elementToAdd = $xmlDoc.CreateNode("element", "element", "")
    $elementToAdd.InnerText = "This is correct"
    $node.AppendChild($elementToAdd)
  }
}

XmlDocument.CreateNode

使用指定的节点类型,名称和NamespaceURI创建XmlNode(示例中NamespaceURI为null)。>

XmlNode.AppendChild(XmlNode)

将指定的节点添加到该节点的子节点列表的末尾

XmlNode

XmlElement

© www.soinside.com 2019 - 2024. All rights reserved.