方法调用失败,因为[System.Xml.XmlElement]不包含名为“ ParentNode”的方法

时间:2019-12-23 18:59:22

标签: powershell-4.0 xmldocument xmlnode

我正在尝试做与this question类似的事情。

我有一个很长的复杂OAGIS模式,并且通过使用文本编辑器,我在XSLT中找到了要映射的元素。现在,我需要找到该元素的父结构。我使用的是MS-BizTalk,架构编辑器不适用于在超大型架构中查找这样的内容。

所以输入是一个xsd模式文件,它当然是XML本身。

它因错误而死:

  

方法调用失败,因为[System.Xml.XmlElement]没有   包含一个名为“ ParentNode”的方法。

我不明白该错误,因为除根之外,所有节点都应有一个父节点,对吗?

cls
$schemaFile = "C:\Users\nealw\Source\Repos\BizTalk2016\OAGIS_10_5_Schemas\OAGIS_10_5_Schemas.Shipment\Schemas\ProcessShipment.xsd"; 
$elementName = "PaymentAuthorization"
$xpath = "//*[local-name()='element'][@ref='$elementName']"

write-host "xpath=$xpath"
write-Host ""

[xml]$xml = Get-Content $schemaFile 
$node = $xml.SelectSingleNode($xpath)
write-host "xpath node = $($node.OuterXml)" 



#now get the chain of parents until no more parents 
$parentCounter = 0 
while ($node.type -ne 'root') 
{
   $parentCounter = $parentCounter + 1 
   $node = $node.ParentNode()
   Write-Host " ParentNode result:"
   $node
   write-host "$parentCounter - parentNode name=$($node.Name) ref=$($node.Attributes['ref']) name=$($node.Attributes['name']) Type=$($node.NodeType)) "

   if ($node.Name -eq "sequence" -or $node.Name -eq "xsd:sequence") 
   { 
       $firstChildOfSequence = $node.FirstChild()
       write-host " Seq:FirstChild: node = $($firstChildOfSequence.Name) ref=$($firstChildOfSequence.Attributes['ref']) name=$($firstChildOfSequence.Attributes['name'])"
   }


}

它应找到的节点如下所示:

 <xsd:element id="oagis-id-4a25b711cc324d12a1705cdada71ad8b" minOccurs="0" maxOccurs="1" ref="PaymentAuthorization">

,它的父母应该是一个序列。

0 个答案:

没有答案