簡體   English   中英

如何從XML獲取值

[英]How to get values from XML

我正在使用PHP。 我是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>

您需要在以下位置使用DOM進行調查,特別是DOMDocument::loadXML()http : //php.net/manual/zh/domdocument.loadxml.php

這將允許您加載文檔,然后以各種方式遍歷文檔,設置元素(節點),屬性等。文檔中的快速示例用於加載XML字符串...

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

在PHP中有大量的有關DOM支持的幫助文檔,tut等。

編輯:上面的代碼對95%的XML很有用,但是您要加載價值XML的大型文件,則需要查看PHP的SimpleXML。 DOM一次加載整個文檔,而SimpleXML允許您一次遍歷一行文檔。 這意味着大文件沒有內存問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM