2014-12-03 43 views
0

與DOM文檔閱讀我有這樣的XML(它的一部分貼在這裏)XML在PHP

<products> 
- <product no="AP1126S-07" name=""Clergoux" set kravata" price="449.8" currency="Kč"> 
- <folders> 
    <folder category="Fashion" subcategory="kravaty" /> 
    </folders> 
<description name="POPIS PRODUKTU">Hedvábná kravata André Philippe s manžetovými   knoflíčky a kapesníčkem v dárkové krabičce zabalené do stejné látky, ze které je vyrobená kravata.</description> 
- <properties> 
    <property name="ROZMĚRY VÝROBKU" value="110×105×110 mm" /> 
    <property name="KS/KARTON" value="96" /> 
    <property name="HMOTNOST KARTONU" value="31,5" /> 
    <property name="NETTO HMOTNOST/KARTON" value="29,5" /> 
    <property name="DIM1" value="90" /> 
    <property name="DIM2" value="45" /> 
    <property name="DIM3" value="36" /> 
    <property name="TECHNOLIGIE POTISKU" value="T1 (8C, 80×50 mm)" /> 
    <property name="TARIF" value="6215100090" /> 
    <property name="M3/CARTON" value="0,146" /> 
    <property name="COOL 2014 KAPITOLA" value="fashion" /> 
    <property name="COOL 2014 STRANY" value="407" /> 
    <property name="main category" value="fashion" /> 
    </properties> 
- <images> 
    <image src="http://www.andapresent.com/kepek/cms/original/26484.jpg" /> 
    </images> 
- <stocks> 
    <stock name="navi_central" value="150" /> 
    <stock name="navi_arrive" value="" date="" /> 
    <stock name="eu_central" value="" date="" /> 
    <stock name="eu_arrive_1" value="" date="" /> 
    <stock name="eu_arive_2" value="" date="" /> 
    </stocks> 

我需要檢查的代碼(如產品沒有=「AP1126S-07」)是一些代碼, ,如果它檢查

我需要去讀股票價值(倉庫中的項目,當前股票上市)。

我正在使用DOMDocument,但之前我從來沒有使用它,而且我很難理解如何讀取XML中的部分值。

謝謝! 任何幫助表示讚賞

我更新的代碼

$xmlString = 'anda_xml_export2.xml'; 
$doc = new DomDocument(); 
$doc->load($xmlString); 

    $product = $doc->getElementsByTagName('product'); 
    $sku = $product->item(0)->getAttribute('no'); 

    echo $sku; 

    if($sku=='AP1126S-07'){ 

     $my_stocks_node = $product->getElementsByTagName("stocks"); 
     $my_stock_node = $my_stocks_node->getElementsByTagName("stock"); 

     $stock = $my_stock_node->item(0)->getAttribute('value'); 

     echo "stock : "; 
     echo $stock; 

    } 

echo $sku; 
+2

請顯示您的代碼,以便我們可以幫助您瞭解您出錯的位置。 SO並不是讓人們爲你寫代碼。 – Barmar 2014-12-03 09:09:07

+1

你的HTML在一些標籤之前是否真的擁有所有'-'字符? – Barmar 2014-12-03 09:09:44

+0

我複製並粘貼了來自IE的XML輸出,這就是爲什麼它有缺陷。 – 2014-12-03 09:11:14

回答

2

$產品是一個DOMElement。您可以使用getAttribute函數訪問DomElements的屬性,在這種情況下,可以使用$ product-> getAttribute('no');

+0

謝謝,剛剛找到它我自己5分鐘前:)感謝很多....我仍然有困難定位股票價值tho',..瀏覽樹... – 2014-12-03 09:44:59

+1

查找DomXPath並使用。 $ xp-> query(「/ products/product [@ no ='AP1126S-07']/stocks」) - > item(0)將返回股票元素。我會離開你從查詢推斷如何找到你正在尋找的股票。 – Mike 2014-12-03 09:51:28

+0

謝謝邁克! DomXPath是一個非常棒的工具,用於查明XML樹中某個項目的確切位置:)))您保存了我的一天。嚴重:) – 2014-12-03 10:12:17