2010-08-17 59 views
0

我有一个c程序,它输出一些行到另一个c程序,将它们填充到一个加载了AJAX的PHP页面中。问题在于输出是很多行,这很好看,但是当被视为HTML时,缺少换行符。最简单的方法:在XML文档中的HTML中断

我最初的想法显然是在输出中加入换行符。 - 这工作得很好,特别是因为我使用responseText来处理AJAX输出。现在我发现,随着原始文本,一些元数据也需要成为AJAX响应的一部分。我跳到使用responseXML,只发现
标签不再正常工作。在这一点上,我可以通过任意数量的教程来弄清楚如何工作一些更复杂的机制,但我真的只想要一个黑客。我能否将元数据嵌入到html评论中,并使用DOM将其挖掘出来(我看了,并没有看到使用dom进行评论的好方法)?我能以某种方式直接使用xml吗?我可以在xml文档中使用CDATA吗(这看起来没有希望)?我可以使用换行符,直到代码到达网页,然后让JS插入br标签吗?

我不需要任何其他格式,只需换行符,而所有这些需要做的就是工作,越简单越好。

+1

输出结果如何?为什么
标签不是一个可行的解决方案? – Fosco 2010-08-17 20:21:00

+0


标签因为它们变成了xml而不起作用。 输出结果只是中间有
的许多行。通过文字回复很容易。 - 但是额外的元数据位需要放在AJAX请求的某个地方,使其更加复杂 – conartist6 2010-08-17 20:41:56

+0

您可以将元数据放入自定义响应头中吗? – Pointy 2010-08-17 20:42:56

回答

0

感谢所有的好建议,但我最终还是决定只预先准备的描述符字节固定数量的每个文本响应,然后使用字符串命令获取任何描述符字节或主文本响应。 这使我可以继续使用更简单的响应文本机制,否则就不复杂。 我会使用自定义标题,但我意识到,这将需要缓冲整个输出在另一个地方,因为PHP脚本实际上只包含一个系统()调用,并不知道它背后的C程序正在做什么。

0

如何使用XSLT样式表格式化传入的XML。将以下内容另存为.html文件作为示例。来源:http://www.w3schools.com/xsl/xsl_client.asp & http://www.w3schools.com/dom/dom_parser.asp

<html> 
<head> 
    <script> 
     //YOUR XML FROM AJAX 
     var XML = "<top><meta><itemone>test meta</itemone></meta><rows><row>line one</row><row>line two</row><row>line three</row></rows></top>"; 
     //A stylesheet to format the lines that come back. 
     var XSLT = '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><h2>Lines</h2><xsl:for-each select="descendant::row"><xsl:value-of select="self::*"/><br /></xsl:for-each></xsl:template></xsl:stylesheet>' 

     function loadXMLDoc(xml) 
     { 
      var tempXML; 
      //IE 
      if (window.ActiveXObject) 
      { 
       tempXML=new ActiveXObject("Microsoft.XMLDOM"); 
       tempXML.loadXML(xml); 
      } 
      else if(window.DOMParser) 
      { 
       parser=new DOMParser(); 
       tempXML=parser.parseFromString(xml,"text/xml"); 
      } 
      return tempXML; 
     } 

     function displayResult() 
     { 
      var xmlDoc = loadXMLDoc(XML); 
      var xsltDoc = loadXMLDoc(XSLT); 
      // code for IE 
      if (window.ActiveXObject) 
      { 
       var ex=xmlDoc.transformNode(xsltDoc); 
       document.getElementById("example").innerHTML=ex; 
      } 
      // code for Mozilla, Firefox, Opera, etc. 
      else if (document.implementation && document.implementation.createDocument) 
      { 
       var xsltProcessor=new XSLTProcessor(); 
       xsltProcessor.importStylesheet(xsltDoc); 
       var resultDocument = xsltProcessor.transformToFragment(xmlDoc,document); 
       document.getElementById("example").appendChild(resultDocument); 
      } 
     } 
    </script> 
</head> 
<body onload="displayResult()"> 
<div id="example" /> 
</body> 
</html> 
+0

谢谢你,我可能最终需要在不久的将来使用这个或类似的东西,但现在它不是最简单的可能... – conartist6 2010-08-23 23:17:55

相关问题