Это зависит от правил кодирования, за которыми следует ваш сервер.
Apple предлагает этот метод класса, но не сообщает о том, какой вид протокола RCF следует .
var escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
После этого полезного инструмента вы должны гарантировать кодирование этих символов для ваших параметров:
Другими словами, говоря о кодировке URL, вы должны следовать за Протокол RFC 1738 .
И Swift не распространяется на кодировку символа +, но он хорошо работает с этими тремя @:? chars.
Итак, чтобы правильно кодировать каждый ваш параметр, параметра .urlHostAllowed
недостаточно, вы также должны добавить специальные символы, например:
encodedParameter = parameter.replacingOccurrences(of: "+", with: "%2B")
Надеемся, что это помогает кому-то, кто сходит с ума, чтобы найти эту информацию.
Вам было бы лучше получить к нему доступ, используя что-то вроде SimpleXML и XPath. Есть по крайней мере два способа сделать это, оба здесь полагаются на использование XPath, но вы должны использовать пространства имен (бит ya:
), чтобы гарантировать, что вы получите правильный элемент. Поскольку XPath возвращает список совпадений, я просто использую [0]
, чтобы получить первое, если есть несколько, вы можете использовать цикл ...
$test = file_get_contents("data.xml");
$xml = simplexml_load_string($test);
// Version 1
// Fetch the ya:created element
$created = $xml->xpath("//ya:created")[0];
// Extract the attributes and print the date
echo $created[0]->attributes("http://purl.org/dc/elements/1.1/")->date;
// Version 2
// Extract the dd:date attribute (using the @)
$createdDate = $xml->xpath("//ya:created/@dc:date")[0];
echo $createdDate;
Забыл сказать - если вы хотите использовать эти поля для базы данных и т. Д., Вам может потребоваться привести их к строке, чтобы убедиться, что они преобразованы ...
$date = (string)$createdDate;