текстовый файл в XML?

#php #xml

#php #xml

Вопрос:

Всем доброго утра!

Я нахожусь в процессе работы над PHP-скриптом, который позволит пользователю выбрать текстовый файл, который соответствует приведенному ниже формату, и преобразовать его в XML-файл.

Текстовый файл

 Barcode:                           9091
Update Bib Status:                 Unable to update bib record: item barcode not found.
Update Holding Status:             Unable to update holdings record: item barcode not found.
Update Item Status:                Unable to update item record: item barcode not found.

Item ID:                           int
Barcode:                           int
Title:                             some stuff
Enum/Chron:                        
Call Number:                       alphanumeric stuff
Call Number Prefix:                
Holding Location:                  some stuff
Permanent Location:                some stuff
Temporary Location:                some stuff
Permanent Type:                    some stuff
Temporary Type:                    
Media Type:                        
Item Status:                       Not Charged
Statistical Categories:            
Magnetic Media:                    No
Sensitize:                         Yes
  

Я хотел бы взять информацию в левом столбце и использовать их как элементы XML, а элементы в правом столбце — как содержимое. Soo …. результатом, которого я хотел бы достичь после запуска скрипта, будет XML-файл, подобный этому:

 <item>
<barcode>9091</barcode>
<ItemID>1234</ItemID>
<title>In the heart of the Sea</title>
....
</item>
  

Я могу загрузить файл, однако я застрял при создании нужных элементов.

То, что у меня есть до сих пор, приведено ниже:

Текущий код PHP

 if(isset($_POST["submit"])){
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["scans"]["name"]); //retain file after upload
    $uploadOk=1;
    move_uploaded_file($_FILES["scans"]["tmp_name"], $target_file);
    echo "Your file has been successfully uploaded.<br>";//let user know file has been received.
    $data=file_get_contents($target_file); //open uploaded file...
    for ($i=0; $i<$data; i  ){
        list($k, $v) = explode(":", $data); //split list into key value pairs
    }
    $xml= new XMLWriter("<holding></holding>");//start new xml
  

Комментарии:

1. Вы что-нибудь пробовали?

2. Пожалуйста, поделитесь своим кодом, в котором вы пытались преобразовать txt в xml.

3. Извините за это .. я нажал отправить преждевременно. Вернулся и отредактировал.

Ответ №1:

Ваш базовый цикл будет выглядеть примерно так:

 $xml = new SimpleXMLElement('<xml/>');

foreach (exploe("n", $data) as $row ) 
{

    $rowData = explode(":", $row);
    $xml->addChild(trim($rowData[0]), trim($rowData[1]));

}

echo "<pre>";
print_r( $xml->asXML() );
echo "</pre>";
  

Это разбивает ваш текстовый файл при каждом переносе строки, а затем использует все, что осталось от первого двоеточия в каждой строке, в качестве имени узла, и все, что находится справа от первого двоеточия в каждой строке, в качестве значения узла (или, точнее, все, что находится между первым двоеточием и вторым двоеточием,если он существует в той же строке; вам нужно будет обработать их самостоятельно). Я добавил туда обрезку, чтобы убрать ваши пробелы.