这是snpdate.xml
<skata serial="GSI100-A-00103"/>
这是test.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<set>
<indexlist>
<index name="mario1" sn="GSI100-A-00100" status="ok" version="v49" />
<index name="mario2" sn="GSI100-A-00101" status="ok" version="v49" />
<index name="mario3" sn="GSI100-A-00102" status="ok" version="v49" />
<index name="mario4" sn="GSI100-A-00103" status="OFF" version="v49" />
<index name="mario5" sn="GSI100-A-00104" status="ok" version="v49" />
<index name="mario6" sn="GSI100-A-00105" status="ok" version="v49" />
<index name="mario7" sn="GSI100-A-00106" status="ok" version="v49" />
</indexlist>
</set>
</Clients>
$xmloff = New-Object System.Xml.XmlDocument
$xmlold = "C:\Program Files (x86)\GSI\Atreus\snupdate.xml"
$xmledit = "C:\Users\bigadmin\Desktop\Projects\AutoUpdate\test.xml"
[xml]$Xmlsn = Get-Content($xmlold) -Encoding UTF8 #open 1st xml
[xml]$Xmlnew = Get-Content($xmledit) -Encoding UTF8 #open 2st xml
$you = $Xmlsn.SelectSingleNode("//skata/@serial") #get value of serial element
$you.Value #prints correct value
$attr = $Xmlnew.SelectSingleNode("//Clients/set/indexlist/index[@sn='$you']/@status")
#from the second xml trying to get the value of status based on sn taking #the variable of $you. returns null.instead of OFF. if i manually insert
#[@sn='GSI100-A-00103'] instead of "$you" i get the correct result.
$attr.Value
我正在尝试从第二个xml获取基于sn的status值,并使用变量$you
。它返回null而不是OK。如果我手动插入
我得到了正确的结果,而不是[@sn='GSI100-A-00103']
,而不是$you
。
我想使用值为$you
的{{1}}变量,并在另一个xml上使用它来查找status = off的新元素值。我认为问题是该变量是从其他xml加载的?
答案 0 :(得分:1)
您需要将if(Vector3.Distance(obstaclesToSpawn[index].transform.position, transform.position)>=distBeforeNextObstacle)
{
//Spawn next obstacle
}
与字符串sn
而不是XmlAttribute $you.Value
进行比较。由于您需要检索带引号的字符串内的属性值,因此使用$you
运算符。
$()
说明:
在字符串内检索对象的属性时,变量扩展将从$attr = $Xmlnew.SelectSingleNode("//Clients/set/indexlist/index[@sn='$($you.Value)']/@status")
字符处停止。这些情况需要使用子表达式运算符.
。运算符告诉PowerShell解析器重新基于$()
字符来评估解析模式,而不是将.
视为文字字符串。
您可以在下面的示例中看到它:
.propertyname
这是子表达式运算符上的Microsoft's Page。