3

我尝试制作一个脚本来更新sharepoint中的webpart,我找到了一些例子,但是我有一个xml问题,我必须将它传递给web part。

只是为了说明,我使用的 powershell 是 1.0。

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

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

在此对象上找不到属性“InnerText”;确保它存在并且是可设置的。

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

我尝试在 Windows Powershell 命令行中执行此行,当我尝试设置内部文本时,它会向我抛出此红色错误消息。

4

2 回答 2

3

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

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

我希望这对其他人有用。

于 2013-10-09T13:00:55.433 回答
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 为空)。

XmlNode.AppendChild(XmlNode)

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

xml节点

Xml元素

于 2020-02-14T01:47:39.777 回答