Я пытаюсь разобрать файл ofx, чтобы получить значения в XML в JavaScript - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь поместить файл ofx в код javascript, используя тип файла ввода, и показать его на экране для финансового контроля. Моя проблема в том, чтобы получать значения отдельно от ofx, разбирать их на xml или разделять в json.

Сначала я пробовал только с javascript, но вскоре понял, что лучше будет передать его через php. Возможно, я ошибаюсь, если есть простой способ сделать это, я открыт для изменений.

<body>
    <div class="topo">
        <a style="color: white" href="">
            <b>Home</b>
        </a>
    </div>
    <div>
<div id="drop-area"> 
    Upload OFX
    <input type="file" id="upload" multiple onchange="handleFiles(this.files)">

</div>

</body>
var reader = new FileReader();
let getxml = function(path, callback){
    let request = new XMLHttpRequest();
    request.open("GET", path);
    request.setRequestHeader("Content-Type", "text/xml");
    request.onReadystatechange = function(){
        if (request.readyState === 4 && request.status === 200){
            callback(request.responseXML);
        }
    }
    request.send();
}

getxml('ofxs/teste.ofx', function(xml){
    console.log(xml);
})

<?php
print_r($_FILES);



$headers = array();
$charsets = array(
    1252 => 'WINDOWS-1251',
);
while(!feof($_FILES)) {
    $line = trim(fgets($_FILES));
    if ($line === '') {
        break;
    }
    list($header, $value) = explode(':', $line, 2);
    $headers[$header] = $value;
}

$buffer = '';

// dead-cheap SGML to XML conversion
// see as well http://www.hanselman.com/blog/PostprocessingAutoClosedSGMLTagsWithTheSGMLReader.aspx
while(!feof($_FILES)) {

    $line = trim(fgets($_FILES));
    if ($line === '') continue;

    $line = iconv($charsets[$headers['CHARSET']], 'UTF-8', $line);
    if (substr($line, -1, 1) !== '>') {
        list($tag) = explode('>', $line, 2);
        $line .= '</' . substr($tag, 1) . '>';
    }
    $buffer .= $line ."\n";
}

// use DOMDocument with non-standard recover mode
$doc = new DOMDocument();
$doc->recover = true;
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$save = libxml_use_internal_errors(true);
$doc->loadXML($buffer);
libxml_use_internal_errors($save);

echo $doc->saveXML();

?>

Я действительно не знаю, что я делаю, я просто следовал некоторым советам и ответам от stackOV и застрял здесь. '-'

...