私は<respcondition>
要素にのみ興味があり、<and>
要素には<or>
要素しか含まれていない次のXMLファイルを持っています。Foreach children()SimpleXMLは完全な構造体を与えません
私はPHPで次のステートメントを試みた:
<!-- language: lang-php -->
foreach ($item->resprocessing->children() as $child) {
if ((string) $child->getName() == 'respcondition') {
if ((string) $child->respcondition->children()->getName() == 'conditionvar') {
if ((string) $child->respcondition->conditionvar->children()->getName() == 'or') {
$responseID = $child->respcondition->conditionvar->or->varequal->attributes()->respident;
//some code
}
}
}
}
}
をしかし、私は最初のIFに来るので、私はchildren()
、その要素から全体のXMLが含まれていないことを考え出しました。私が使用できるいくつかの選択肢がありますか?
<!-- language: lang-xml -->
<resprocessing>
<outcomes>
<decvar varname="SCORE" vartype="Decimal" defaultval="0" minvalue="0.0" maxvalue="1.0" cutvalue="1.0"/>
</outcomes>
<respcondition continue="Yes" title="Mastery">
<conditionvar>
<or>
<varequal respident="1000006631" case="Yes"><![CDATA[Mars]]></varequal>
</or>
</conditionvar>
<setvar varname="SCORE" action="Add">1.0</setvar>
</respcondition>
<respcondition continue="Yes" title="Mastery">
<conditionvar>
<or>
<varequal respident="1000006678" case="Yes"><![CDATA[Jupiter]]></varequal>
</or>
</conditionvar>
<setvar varname="SCORE" action="Add">1.0</setvar>
</respcondition>
<respcondition title="Mastery" continue="Yes">
<conditionvar>
<and>
<or>
<varequal respident="1000006421" case="Yes"><![CDATA[planets]]></varequal>
</or>
<or>
<varequal respident="1000006468" case="Yes"><![CDATA[sun]]></varequal>
</or>
<or>
<varequal respident="1000006558" case="Yes"><![CDATA[Mercury]]></varequal>
</or>
</and>
</conditionvar>
<displayfeedback feedbacktype="Response" linkrefid="Mastery"/>
</respcondition>
</resprocessing>
種類は、あなたが直接それらのノードを取得するためにSimpleXml::xpath
を使用することができます