2015-12-18 225 views
0

我正在使用PHP。我是XML的新手。我想將所有值設置爲其他地方使用的變量。如何從XML獲取值

例如,<property name="HoldType" value="4" /> 我想設置$ holdtype_value等於4.

此外併發症; <property class="Action0">有一個name =「Class」的子屬性,Action1屬性也是如此。我需要這些值的變量。

以下是XML中的示例項。一些項目具有更多或更少的屬性。

<item id="24" name="hoe"> 
    <property name="Meshfile" value="Items/Tools/hoe_iron" /> 
    <property name="Material" value="metal" /> 
    <property name="HoldType" value="4" /> 
    <property name="Stacknumber" value="1" /> 
    <property name="RepairTools" value="forgedIron" /> 
    <property name="Degradation" value="300" param1="true" /> 
    <property name="SoundDestroy" value="wooddestroy1" /> 
    <property name="FuelValue" value="24" /> 
    <property name="Weight" value="32" /> 
    <property class="Action0"> 
     <!-- AttackAction --> 
     <property name="Class" value="Melee" /> 
     <property name="Delay" value="2.1" /> 
     <property name="Range" value="2" /> 
     <property name="Sphere" value="0.2" /> 
     <property name="Block_range" value="4" /> 
     <property name="DamageEntity" value="5" /> 
     <property name="DamageBlock" value="1" /> 
     <property name="Sound_start" value="swoosh" /> 
     <property name="Stamina_usage" value="8" /> 
     <property name="DamageBonus.earth" value="2" /> 
     <property name="DamageBonus.glass" value="25" /> 
     <property name="DamageBonus.head" value="4" /> 
    </property> 
    <property class="Action1"> 
     <!-- UseAction --> 
     <property name="Class" value="MakeFertile" /> 
     <property name="Delay" value="2.1" /> 
     <property name="Block_range" value="4" /> 
     <property name="DamageBlock" value="1" /> 
     <property name="Sound_start" value="swoosh" /> 
     <property name="Sound_end" value="UseActions/repair_block" /> 
     <property name="Fertileblock" value="fertileFarmland" /> 
     <property name="Adjacentblock" value="dirt" /> 
    </property> 
    <property name="Group" value="Tools/Traps" /> 
    <property class="Preview"> 
     <property name="Zoom" value="0" /> 
     <property name="Pos" value="0,0" /> 
    </property> 
    <property name="ActionSkillGroup" value="Mining Tools"/> 
    <property name="CraftingSkillGroup" value="Tool Smithing"/> 
</item> 
+0

向我們顯示您的代碼。你試過了什麼? – sandeepsure

回答

0

您需要使用DOM進行調查,特別是DOMDocument::loadXML()這裏:http://php.net/manual/en/domdocument.loadxml.php

這將允許您加載文檔,然後以各種方式穿越它,設置元素(節點),屬性,從文檔加載XML字符串等簡單的例子...

$doc = new DOMDocument(); 
$doc->loadXML('<root><node/></root>'); 
/* ... traverse the document here ... do your stuff ... */ 
echo $doc->saveXML(); 

有噸的幫助文檔,TUTS等周邊在PHP中的DOM支持。

編輯:以上是對你有好處,會碰到那裏的XML的95%,但如果你要裝載大文件的XML的價值,你會想要在PHP的SimpleXML OT,而不是看。 DOM一次加載整個文檔,而SimpleXML則允許您一次遍歷一行文檔。這意味着大文件沒有內存問題。