php part
<?php
$f = fopen( "temp.xml","r" );
$str = "";
while( $line = fgets($f) ){
if( !($line[1]=='?' || $line[1]=='b' || $line[2]=='b') ){
$str.= $line."<br>";
}
}
fclose( $f );
$xdoc = new DomDocument;
$xdoc->Load('text.xml');
$body = $xdoc->getElementsByTagName('textBody')->item(0);
$txtNode = $xdoc ->createTextNode ( $str );
$body -> appendChild($txtNode);
$test = $xdoc->save("text.xml");
?>
xml file updated.
<textBody>
<br>
<br> &#13;
<br><font>Heading Here...</font>&#13;
<br><font>Text Here...</font>&#13;
<br>
</textBody>
I want to create child in xml file but the special characters are converted into their codes as shown above.
I want the output as
<br><br>
<br><font>Heading Here </font>
<br><font>Text Here</font>
<br>
答案 0 :(得分:1)
textNode仅包含字符数据。
如果您想创建并插入包含多个元素节点的片段,请使用DOMDocument::createDocumentFragment
$xdoc = new DomDocument;
$xdoc->Load('text.xml');
$body = $xdoc->getElementsByTagName('textBody')->item(0);
$fragment = $xdoc ->createDocumentFragment ();
$fragment->appendXML( $str );
$body -> appendChild($fragment);
请注意: appendXML()
不是DOM的一部分,它是一个PHP实现。
如果您希望以“干净”的DOM方式执行此操作,请创建新文档,使用loadXML()加载字符串并将结果导入到其他文档中。
答案 1 :(得分:1)
$txtNode = $xdoc ->createTextNode ( $str );
你已经要求提供一些文字了,你得到的是文字。 <
表示文字左角括号字符。
如果要将原始标记插入到文档中,例如在浏览器中设置innerHTML
,则必须创建新文档,将标记加载到其中,然后将生成的DOM节点导入到目标中文献。有关如何执行此操作,请参阅this question。
然而:
<textBody>
<br><br>
...
</textBody>
这不是格式良好的XML,因此不能作为标记包含在XML文档中。如果要在XML文件中存储任意HTML,则应继续将其作为文本内容进行,因为HTML标记与XML标记不同(除非您使用的是XHTML)。