2014-12-29 154 views
1

這是我的PHP/XML代碼。我只是想要搜索這個特定$searchterm從XML搜索特定節點值

$doc = new DOMDocument; 
$doc->load('authentication.xml'); 

$xpath = new DOMXPath($doc); 

$searchTerm = "N0A097016646"; 

$lineNo = 0; 
foreach ($xpath->query('//device/following::comment()') as $comment){ 
    $serial= $xpath->query('//device', $comment)->item($lineNo)->textContent; 

    echo "Line number: ".$comment->getLineNo()." Device number: ".$serial." Comented number: ".$comment->textContent."<br>"; 

    $lineNo++; 
} 

我應該在哪裏把$searchTerm變量來搜索特定的節點?

+0

使用'$ searchTerm'你的XPath查詢,它不使用內。關於'contains()' – Ghost

+0

的研究我試過了, 但是不起作用: $ serial = $ xpath-> query('// device [contains(''。$ searchTerm。'「)]',$ comment ) - >項目($ lineNo的) - >的textContent; – user3619039

+0

你有一個樣本XML可以使用嗎?很難猜到這一點 – Ghost

回答

1

由於您的問題表明您沒有使用$searchTerm

=(等於)使用它

text() = '$searchTerm' 

代碼:

$searchTerm = "N0A097016646"; 

foreach ($xpath->query("//device[text() = '$searchTerm']/following::comment()") as $comment){ 
    echo "Line number: ".$comment->getLineNo(). '<br/>'. 
    " Device number: ".$searchTerm.'<br/>'. 
    " Comented number: ". $comment->textContent."<hr>"; 
} 

Sample Output

+0

嗨, 但我只想按照該$ SEARCHTERM 1個結果;但是這再次顯示了一切。請幫助解決它 這是我的xml: <?xml version =「1.0」encoding =「utf-8」?>; <! - 可以使用值「true」或「false」來激活/停用SN驗證以啓動應用程序 - ><! - Production Serial Numbers - > J0A0AM049303 \t < ! - - > H0A0AG014628 \t <! - 100002 \t - > N0A097016646 \t <! - - > user3619039

+0

嗨解決,有很大的幫助! – user3619039

+0

@ user3619039確定我很高興這有助於 – Ghost