10/10/2018, 10:28

Nhờ sửa giúp code php xuất ra file xml này.

Xin chào mọi người.
Em có code php này:

Code:
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;

if(!file_exists('data.xml')){
    $doc->appendChild($doc->createElement('books'));
    $doc->save('data.xml');
}

@$doc->load('data.xml');

//Searches for all elements with the "books" tag name
$root = $doc->getElementsByTagName('books');
if($root->length == 0){
    $doc->appendChild($doc->createElement('books'));
}

/* tao doi tuong documentfragment */
$f = $doc->createDocumentFragment();

/* them item */
$item = $doc->createElement('book');
$item->appendChild($doc->createElement('name', $_POST['name']));
$item->appendChild($doc->createElement('price', $_POST['price']));

$f->appendChild($item);

$doc->documentElement->appendChild($f);
$doc->save('data.xml'); 
echo $doc->saveXML();
?>
Khi chạy thì xuất ra file xml như sau:

Code:
<?xml version="1.0"?>
<books>
  <book>
    <name>aaaaaaaaaaaaa</name>
    <price>bbbbbbbb</price>
  </book>
</books>

Nhờ các anh chị rành về code php & mxl sửa giúp lại code php trên để xuất ra file xml này: (thêm node <booklist>)

Code:
<?xml version="1.0"?>
<books>
<booklist>
  <book>
    <name>aaaaaaaaaaaaa</name>
    <price>bbbbbbbb</price>
  </book>
<booklist>
</books>
Cam on nhieu
plzh33 viết 12:31 ngày 10/10/2018
Mình nghĩ ghi đè file xml sẽ đơn giản hơn so với sửa node xml
1. Tạo một chuỗi chứa định dạng xml
2. Ghi chuỗi ấy vào file đè lên file ban đầu
anhsoft viết 12:31 ngày 10/10/2018
Được gửi bởi plzh33
Mình nghĩ ghi đè file xml sẽ đơn giản hơn so với sửa node xml
1. Tạo một chuỗi chứa định dạng xml
2. Ghi chuỗi ấy vào file đè lên file ban đầu
Em đâu có sửa node nào đâu ??? Anh chỉ rõ thêm được không ?
Với đoạn code php trên thì em muốn sửa như thế nào để được file xml này thôi .

Code:
<?xml version="1.0"?>
<books>
<booklist>
  <book>
    <name>aaaaaaaaaaaaa</name>
    <price>bbbbbbbb</price>
  </book>
  <book>
    <name>aaaaaaaaaaaaa1</name>
    <price>bbbbbbbb1</price>
  </book>
<booklist>
</books>
chameron viết 12:34 ngày 10/10/2018
chia làm 3 file
top.txt
<?xml version="1.0"?>
<books>
<booklist>

body.txt
<book>
<name>aaaaaaaaaaaaa</name>
<price>bbbbbbbb</price>
</book>
<book>
<name>aaaaaaaaaaaaa1</name>
<price>bbbbbbbb1</price>
</book>

bottom.txt
<booklist>
</books>

muốn ghi thêm thì append vô cái body.txt xong gộp cả 3 cái vào thành 1 .
có được không
anhsoft viết 12:41 ngày 10/10/2018
Cám ơn bạn đã gợi ý, nhưng làm như thế càng không được.!!!
bạn nhìn kỹ code php chưa ?
Code:
$item->appendChild($doc->createElement('name', $_POST['name']));
$item->appendChild($doc->createElement('price', $_POST['price']));
Cái này sẽ nhận giá trị từ input form gửi đến.

có ai giúp nữa không vậy ???
tiendx2002 viết 12:32 ngày 10/10/2018
Mình không rành về các hàm làm việc với XML nhưng dựa vào phân tích đoạn code và kết quả có thể đưa ra giải pháp.
Từ
Code:
/* them item */
$item = $doc->createElement('book');
$item->appendChild($doc->createElement('name', $_POST['name']));
$item->appendChild($doc->createElement('price', $_POST['price']));

$f->appendChild($item);
Chuyển thành
Code:
/* them item */
$itembl = $doc->createElement('booklist');
$item = $doc->createElement('book');
$item->appendChild($doc->createElement('name', $_POST['name']));
$item->appendChild($doc->createElement('price', $_POST['price']));

$itembl->appendChild($item);
$f->appendChild($itembl);
Thân ái.
chameron viết 12:31 ngày 10/10/2018
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;

if(!file_exists('data.xml')){
$doc->appendChild($doc->createElement('books'));
$doc->save('data.xml');
}

@$doc->load('data.xml');


$root = $doc->getElementsByTagName('books');
if($root->length == 0){
$doc->appendChild($doc->createElement('books'));
}
if($root[0]->childNodes[0]->nodeValue != 'booklist'){
$root[0]->appendChild($doc->createElement('booklist'));
}
/* tao doi tuong documentfragment */
$f = $doc->createDocumentFragment();

/* them item */
$item = $doc->createElement('book');
$item->appendChild($doc->createElement('name', $_POST['name']));
$item->appendChild($doc->createElement('price', $_POST['price']));

$f->appendChild($item);

$root[0]->childNodes[0]->appendChild($f);

$root[0]->save('data.xml');

echo $root[0]->saveXML();
?>
tuankietnnt viết 12:37 ngày 10/10/2018
lien he nguyenhuapho@yahoo.com
ổng chỉ cho
Bài liên quan
0