jestem generowania XML w widoku z CakePHP za Xml core library:CakePHP XML library narzędzie wyzwala DOMDocument ostrzeżenie
$xml = Xml::build($data, array('return' => 'domdocument'));
echo $xml->saveXML();
View jest zasilany ze sterownika z tablicy:
$this->set(
array(
'data' => array(
'root' => array(
array(
'@id' => 'A & B: OK',
'name' => 'C & D: OK',
'sub1' => array(
'@id' => 'E & F: OK',
'name' => 'G & H: OK',
'sub2' => array(
array(
'@id' => 'I & J: OK',
'name' => 'K & L: OK',
'sub3' => array(
'@id' => 'M & N: OK',
'name' => 'O & P: OK',
'sub4' => array(
'@id' => 'Q & R: OK',
'@' => 'S & T: ERROR',
),
),
),
),
),
),
),
),
)
);
Dla niezależnie od przyczyny CakePHP wydaje takie wewnętrzne wywołanie:
$dom = new DOMDocument;
$key = 'sub4';
$childValue = 'S & T: ERROR';
$dom->createElement($key, $childValue);
... które uruchamia PHP Warning:
Warning (2): DOMDocument::createElement(): unterminated entity reference T [CORE\Cake\Utility\Xml.php, line 292
... ponieważ (as documented) DOMDocument::createElement
nie ucieka wartości. Jednak robi to tylko w niektórych węzłach, co ilustruje przypadek testowy.
Czy robię coś złego lub właśnie trafiłem błąd w CakePHP?
wartość owijania jak to '' '$ dom-> createElement ($ key, htmlspecialchars ($ childValue)); '' 'zrobi sztuczkę – Alliswell
@Alliswell - Przeczytaj ponownie pytanie. To jest pytanie CakePHP i nie wywołuję bezpośrednio funkcji DOM, tylko buduję tablicę. I nie mogę poprawiać rdzenia CakePHP w ten sposób, ponieważ niektóre elementy są już usunięte, inne nie. (Zobacz akceptowaną odpowiedź na dodatkowe szczegóły.) –