[英]XML - Getting the element child value from the attribute using php
我正在使用php解析我的xml文件,我想要做的就是從屬性獲取子元素值:
<question number="1">
<type>Main</type>
</question>
<question number="2">
<type>Secondary</type>
</question>
偽代碼(無效):
$xmlDoc = new DOMDocument();
$xmlDoc->load('questions.xml');
$searchNode = $xmlDoc->getElementsByAttribute("number");
foreach( $searchNode as $searchNode ) {
if ($searchnode == "1"){
$xmlType = $searchNode->getElementsByTagName( "Type" );
$valueType = $xmlType->item(0)->nodeValue;
echo $valueType;
}else{
//Do nothing
}
}
$xp = new DOMXPath($xmlDoc);
echo $xp->evaluate('string(/questions/question[@number=1]/type)'); // Main
請注意,您必須有一個根節點,因此以上假設存在一個<questions>
元素。 使用元素的直接路徑通常更有效,但是您也可以使用//question[…
來查詢文檔中任何地方的任何<question>
。
如果要在沒有XPath的情況下執行此操作,則可以執行
foreach ($xmlDoc->getElementsByTagName('question') as $question) {
if($question->getAttribute('number') === '1') {
echo $question->getElementsByTagName('type')->item(0)->nodeValue;
// or
echo $question->childNodes->item(1)->nodeValue;
}
}
請注意,當使用childNodes
而不將DOMDocument::preserveWhiteSpace
設置為FALSE
,任何換行符,制表位和其他空格都將被解析為DOMText
節點,因此, item(1)
而不是item(0)
因為后者是DOMText
節點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.