我的product.xml:
<product>
<name></name>
<price></price>
<short_desc></short_desc>
<quantity></quantity>
</product>
我如何将xml数据分成多个页面,假设我有30个产品记录,我希望它每页显示5个,所以我在同一个文件中有6个页面.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";
}
这就是我所做的,但它没有显示任何东西,
答案 0 :(得分:0)
你可以使用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>
答案 1 :(得分:0)
我不会将所有产品都变成一个数组,而是首先利用你正在使用的DOMDocument提供对一般元素和数据的访问这一事实。
在下面的示例中,通过使用DOMDocuments DOMXpath对象和LimitIterator
将所有产品元素的输出限制为当前页面的范围来完成分页。您可以找到一个完整的示例,其中包含以下使用SimpleXML的答案:
以下是与DOMDocument和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