3
這是另一個用於我的PC遊戲 - 太空工程師服務器。答案似乎應該是簡單的,但它讓我陷入了困境,因爲我找不到調用這些信息的正確方法。Powershell和XML:如何統計每個節點的特定元素
我想要做的是獲得特定元素出現在每個節點中的次數。我有這個部分工作,但不完全是我想要的。
這是我到目前爲止有:
從XML的摘錄(摺疊除了目標節點的節點)
<MyObjectBuilder_Sector xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Position>
<SectorEvents>
<AppVersion>
<SectorObjects>
<MyObjectBuilder_EntityBase xsi:type="MyObjectBuilder_CubeGrid">
<CubeBlocks>
<MyObjectBuilder_CubeBlock xsi:type="MyObjectBuilder_Reactor">
<MyObjectBuilder_CubeBlock xsi:type="MyObjectBuilder_Thrust">
<MyObjectBuilder_CubeBlock xsi:type="MyObjectBuilder_Drill">
<MyObjectBuilder_CubeBlock xsi:type="MyObjectBuilder_Drill">
<SubtypeName>SmallBlockDrill</SubtypeName>
<EntityId>72280681079646079</EntityId>
<Min x="1" y="1" z="-7" />
<BlockOrientation Forward="Forward" Up="Left" />
<ColorMaskHSV x="0" y="-1" z="0" />
<Owner>144256542526969420</Owner>
<ShareMode>None</ShareMode>
<ShowOnHUD>false</ShowOnHUD>
<Enabled>false</Enabled>
<Inventory>
<Items />
<nextItemId>0</nextItemId>
</Inventory>
</MyObjectBuilder_CubeBlock>
和我的PowerShell代碼,讓我回每個立方體塊數
<MyObjectBuilder_EntityBase xsi:type="MyObjectBuilder_CubeGrid">
立方體網格。
$filePath = 'F:\DedicatedServer\DataDir\SE Survival 2\Saves\VPS RC 1\SANDBOX_0_0_0_.sbs'
[xml]$myXML = Get-Content $filePath
$ns = New-Object System.Xml.XmlNamespaceManager($myXML.NameTable)
$ns.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance")
$infos = $myXML.SelectNodes("//SectorObjects/MyObjectBuilder_EntityBase[(@xsi:type='MyObjectBuilder_CubeGrid')]" ,$ns)
foreach ($info in $infos){
$info.CubeBlocks.MyObjectBuilder_CubeBlock.count
}
所以我試圖得到這個反饋每個立方體網格小鑽的數量。在這裏看到的XML
<MyObjectBuilder_CubeBlock xsi:type="MyObjectBuilder_Drill">
<SubtypeName>SmallBlockDrill</SubtypeName>
我覺得這是接近解決,但其恢復爲每立方網同樣的號碼,這樣可以不正確。
$info = $info.SelectNodes("//CubeBlocks/MyObjectBuilder_CubeBlock[(@xsi:type='MyObjectBuilder_Drill')]/SubtypeName['SmallBlockDrill']" ,$ns).InnerText
$info.count
下面的結果。我相信這是世界範圍內大型和小型演習的總數,只是爲每個發現的網格重複。感覺接近,但我打賭子類型值選擇不工作,因爲我想要它。
490
490
490
490
490
490
490
490
有時候你只需要另一雙眼睛!解決了。 – Tostito80 2014-08-29 05:56:13