拆分XML数据页PHP的

我product.xml:拆分XML数据页PHP

<product> 

<name></name>

<price></price>

<short_desc></short_desc>

<quantity></quantity>

</product>

我如何可以将XML数据分割到多个页面,比方说,我有产品的30纪录,我想它显示5每页,那么我有6页在同一个file.php。

我已阅读拆分到网页,但它不工作,任何人都可以帮助我?

$objDOM = new DOMDocument(); 

$objDOM->load("product.xml");

$titleArray = array();

$ps = $objDOM->getElementsByTagName("product");

$allItems = array(

"name" => $node->getElementsByTagName("name")->item(0)->nodeValue,

"rice" => $node->getElementsByTagName("price")->item(0)->nodeValue,

"short_desc" => $node->getElementsByTagName("short_desc")->item(0)->nodeValue,

"quantity" => $node->getElementsByTagName("quantity")->item(0)->nodeValue);

$itemsPerPage = 5;

$page = isset($_GET['page']) ? intval($_GET['page']) : 0;

foreach (array_slice($allItems, $page * $itemsPerPage, $page * $itemsPerPage + $itemsPerPage) as $item) {

echo "$item\n";

}

这是我一直在做,但它并没有显示任何东西,,

回答:

你可以使用simplexml_load_string或使用simplexml_load_file功能(从PHP 5)? 如果您product.xml文件具有结构简单,你可以很容易地做你想做的就是那样的一些代码:

$allItems = simplexml_load_file("product.xml"); 

$itemsPerPage = 5;

$page = isset($_GET['page']) ? intval($_GET['page']) : 0;

$pageItems = array_slice($allItems, $page * $itemsPerPage, $page * $itemsPerPage + $itemsPerPage)

foreach($allItems AS $prod) {

echo $prod->name."<br>";

echo $prod->price."<br>";

echo $prod->short_desc."<br>";

echo $prod->quantity."<br>";

echo "---------<br>";

}

另外,检查你的XML文件:它必须以XML声明和根元素开始!

<?xml version='1.0'?> 

<products>

<product>

<name>name1</name>

<price>price1</price>

<short_desc>desc1</short_desc>

<quantity>q1</quantity>

</product>

<product>

<name>name2</name>

<price>price2</price>

<short_desc>desc2</short_desc>

<quantity>q2</quantity>

</product>

<product>

<name>name3</name>

<price>price3</price>

<short_desc>desc3</short_desc>

<quantity>q3</quantity>

</product>

</products>

回答:

,而不是把所有的产品到一个数组,我想首先是利用了DOM文档您正在使用提供了访问单个元素和数据在一般的事实。

在以下示例中,通过使用DOMDocuments DOMXpath对象和LimitIterator,将所有产品元素的输出限制为当前页面的范围,从而完成分页。您可以用下面的答案,正在SimpleXML的使用一个完整的例子:

  • XML pagination with PHP(重复:How to Paginate lines in a foreach loop with PHP)

下面是用法示例是同样与DOM文档和DOMXPath工作:

$doc = new DOMDocument(); 

$doc->loadXML($xml);

$xpath = new DOMXPath($doc);

$products = $xpath->query('/xml/product');

$_GET['page'] = 3;

$itemsPerPage = 2;

$pagination = new LimitPagination(

defaultvar($_GET, 'page'), $products->length, $itemsPerPage

);

foreach ($pagination->getLimitIterator($products) as $product) {

/* @var $product DOMElement */

echo $product->ownerDocument->saveXML($product), "\n";

}

你可以找到完整的,自包含的示例代码(包括XML)位置:https://gist.github.com/hakre/603638a18918b0549019

以上是 拆分XML数据页PHP的 的全部内容, 来源链接: utcz.com/qa/266052.html

回到顶部