2014-02-20 88 views
0

我從xml中獲取值時遇到了一些問題。PHP - 從xml中獲取值

XML看起來像

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="http://crd.gov.pl/xml/schematy/UPO/2008/05/09/UPO.xsl"?> 
<pos:Document xmlns:pos="SOMEURL" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <pos:DescribeDoc/> 
    <pos:UPD> 
     <pos:IdDoc>procotol-UPD2198338</pos:IdDoc> 
     <pos:IdCases>221872</pos:IdCases> 
     <pos:additionalInfo TypeInfo="Source">Some string</pos:additionalInfo> 
    </pos:UPD> 
... 

我一般儘量去POS:IdCases。 我試試這個代碼:

$domContent = new SimpleXMLElement(((string) $content), LIBXML_COMPACT); 
$test = $domContent->xpath('/pos:Document/pos:UPD/*'); 
foreach($test as $node){ 
    print_r($node) 
} 

,我收到了一些對象,如

SimpleXMLElement Object 
(
    [0] => procotol-UPD2198338 
) 

SimpleXMLElement Object 
(
    [0] => 221872 
) 

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [TypeInfo] => Source 
     ) 

    [0] => Some string 
) 

但我一定要到POS:IdCases。我無法使用索引[1],因爲訂單可能會更改。

我的問題是: 我要如何才能到達值節點:POS:IdCases 我不能添加ID或其他信息節點,因爲這個XML簽署(XAdES的)。

你能給我一些建議嗎?感謝您的幫助

回答

2

簡單地改變XPath來匹配<Pos:IdCases/>節點:

$test = $domContent->xpath('/pos:Document/pos:UPD/pos:IdCases'); 
+0

....這是絕對明顯。謝謝 –