1 Возможная проблема заключается в том, что вы не избегаете своих строк, когда вы вставляете их в свой XML-код, который может оставить вас с поврежденным XML-файлом (например, &
должен быть экранирован как &
, <
должен стать <
, '
должно стать '
и т. д.)
вы можете кодировать строки xml с помощью этой функции:
function xml_esacpe(string $str, string $charset = 'UTF-8'): string {
if (! strlen ( $str )) {
return "";
}
$ret = htmlspecialchars ( $str, ENT_QUOTES | ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_XML1, $charset, true );
if (! strlen ( $ret )) {
throw new Exception ( "failed to xml-encode input! (most likely wrong charset or corrupted input)" );
}
return $ret;
}
, кроме того, вы можете проверить что ваш XML действителен, выполнив $isValidXML=@((new DOMDocument())->loadXML($xml));
- теперь это будет true, если xml действителен или false, если xml недействителен. - это xml, который вы отправляете на самом деле действительный xml?
, но в любом случае вы должны уточнить, что вы подразумеваете под the code not working for me
- , как не работает?