PHP конвертировать XML в JSON

(Код в этом ответе был обновлен для Swift 3 и более поздних версий.)

По-видимому, ваша переменная path является NSURL (описывающей путь к файлу) , Чтобы получить путь в виде строки, используйте свойство path, а не absoluteString:

let exists = FileManager.default.fileExists(atPath: path.path)

absoluteString возвращает URL-адрес в строчном формате, включая схему file: и т. Д.

Пример:

let url = URL(fileURLWithPath: "/path/to/foo.txt")

// This is what you did:
print(url.absoluteString)
// Output:    file:///path/to/foo.txt

// This is what you want:
print(url.path)
// Output:    /path/to/foo.txt
141
задан Bryan Hadlock 12 January 2012 в 06:04
поделиться

1 ответ

Найденный FTAV отвечают самое полезное, поскольку это очень настраиваемо, но его функция xml2js имеет некоторые дефекты. Например, если дочерние элементы будут иметь равный tagnames, то они все будут сохранены в отдельном объекте, это означает, что порядок элементов не будет сохранен. В некоторых случаях мы действительно хотим сохранить порядок, таким образом, мы лучше храним данные каждого элемента в отдельном объекте:

function xml2js($xmlnode) {
    $jsnode = array();
    $nodename = $xmlnode->getName();
    $current_object = array();

    if (count($xmlnode->attributes()) > 0) {
        foreach($xmlnode->attributes() as $key => $value) {
            $current_object[$key] = (string)$value;
        }
    }

    $textcontent = trim((string)$xmlnode);
    if (strlen($textcontent) > 0) {
        $current_object["content"] = $textcontent;
    }

    if (count($xmlnode->children()) > 0) {
        $current_object['children'] = array();
        foreach ($xmlnode->children() as $childxmlnode) {
            $childname = $childxmlnode->getName();
            array_push($current_object['children'], xml2js($childxmlnode, true));
        }
    }

    $jsnode[ $nodename ] = $current_object;
    return $jsnode;
}

Вот то, как это работает. Начальная структура XML:

<some-tag some-attribute="value of some attribute">
  <another-tag>With text</another-tag>
  <surprise></surprise>
  <another-tag>The last one</another-tag>
</some-tag>

Результат JSON:

{
    "some-tag": {
        "some-attribute": "value of some attribute",
        "children": [
            {
                "another-tag": {
                    "content": "With text"
                }
            },
            {
                "surprise": []
            },
            {
                "another-tag": {
                    "content": "The last one"
                }
            }
        ]
    }
}
0
ответ дан 23 November 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: