- 在将标记xml
<newWord>
写到正确的位置之前,我如何才能下线?并且在标签<Heb>
之前
我的代码重写了xml文件,当他添加数据时,他将从js获得的所有数据添加到第一行,这一行将非常长。
我的代码:
<?php
$wordH=$_GET['varHeb'];
$wordE=$_GET['varEng'];
$new_line = "'n";
$doc='';
if(!$doc)
{
$doc = new DOMDocument();
// we want a nice output
$doc->formatOutput = true;
$doc->load('Dictionary_user.xml');
}
$Dictionary_user = $doc->documentElement;
$newWord = $doc->createElement('newWord');
CHARSET=windows-1255"');
$prop = $doc->createElement('Heb', $wordH);
$newWord->appendChild($prop);
$prop = $doc->createElement('Eng',$wordE);
$newWord->appendChild($prop);
$Dictionary_user->childNodes->item(0)->parentNode->insertBefore($newWord,$Dictionary_user->childNodes->item(0));
header("Content-type: text/xml");
$doc->save("Dictionary_user.xml");
echo $doc->saveXML();
?>
糟糕的结果是:
<?xml version="1.0" encoding="UTF-8"?>
<Favorite_Word xml:lang="EN"><newWord><Heb>test1</Heb><Eng>test2</Eng></newWord><newWord><Heb>test1</Heb><Eng>test2</Eng></newWord><newWord><Heb>test1</Heb><Eng>test2</Eng></newWord>
测试1test2`
<newWord>
<Heb>cow</Heb>
<Eng>Co</Eng>
</newWord>
<newWord>
<Heb>Camel</Heb>
<Eng>Ca</Eng>
</newWord>
<newWord>
<Heb>Bull</Heb>
<Eng>BUl</Eng>
</newWord>
好的结果是:
<Favorite_Word xml:lang="EN">
<newWord>
<Heb>test1</Heb>
<Eng>test2</Eng>
</newWord>
<newWord>
<Heb>cow</Heb>
<Eng>Co</Eng>
</newWord>
<newWord>
<Heb>Camel</Heb>
<Eng>Ca</Eng>
</newWord>
<newWord>
<Heb>Bull</Heb>
<Eng>BUl</Eng>
</newWord>
formatOutput
在加载已创建的DOM文档时不起作用。通常通过load*()
方法分组。但如果你创造了它,它会起作用的。
您可以使用regex来完成此操作。幸运的是,有人已经做到了。
XML用于数据交换。如果您能够生成一个有效的xml文档,并且其他方能够读取它,那么它的目的就达到了。新行、空格被完全忽略。因此,您所调用的坏xml一点也不坏。完全可以。