簡體   English   中英

XML-使用php從屬性獲取元素子值

[英]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
}

}

使用DOMXPath::evaluate

$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.

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