Php 如何从XML中获取值

Php 如何从XML中获取值,php,xml,Php,Xml,我正在使用PHP。我是XML的新手。我想将所有值设置为变量,以便在其他地方使用 例如, 我想将$holdtype_值设置为等于4 进一步复杂化有一个子属性name=“Class”,Action1属性也是如此。我需要一个变量来表示这些值 下面是XML中的一个示例项。有些项目具有或多或少的属性 <item id="24" name="hoe"> <property name="Meshfile" value="Items/Tools/hoe_iron" />

我正在使用PHP。我是XML的新手。我想将所有值设置为变量,以便在其他地方使用

例如,
我想将$holdtype_值设置为等于4

进一步复杂化
有一个子属性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()
进行调查:

这将允许您加载文档,然后以各种方式遍历它,设置元素(节点)、属性等。来自文档的加载XML字符串的快速示例

$doc = new DOMDocument();
$doc->loadXML('<root><node/></root>');
/* ... traverse the document here ... do your stuff ... */
echo $doc->saveXML();
$doc=newDOMDocument();
$doc->loadXML(“”);
/* ... 在这里遍历文档。。。做你的事*/
echo$doc->saveXML();
围绕PHP中的DOM支持,有大量帮助文档、TUT等


EDIT:以上内容适用于95%的XML,但是如果您加载的是大量XML文件,那么您就需要看看PHP的SimpleXML了。DOM一次加载整个文档,而SimpleXML允许您一次遍历一行文档。这意味着大文件上没有内存问题。

显示您的代码。你试过什么?