如何从jQuery返回的XMLDocument(跨浏览器)获取整个XMLstring?

我已经尝试过,并且无法find如何从GET返回的XMLDocument中获取整个XMLstring。 关于如何查找或replace对象中的特定元素,有很多问题,但似乎无法find任何答案如何将整个文档作为string。

我正在使用的例子是从这里 。 “用xml做什么”是我目前所在的地方。 我觉得这应该是非常微不足道的,但是我不知道如何。 是否有可用于此目的的“xml.data()”或类似的东西?

$.ajax({ url: 'document.xml', type: 'GET', dataType: 'xml', timeout: 1000, error: function(){ alert('Error loading XML document'); }, success: function(xml){ // do something with xml } }); 

用例是我想要将xml提供给flash插件,为此我需要将实际的XML作为string。

我需要实际的XML作为一个string

你想它作为纯文本,而不是XML对象? 将dataType'xml'更改为'text' 。 有关更多选项,请参阅$ .ajax文档 。

如果你想同时获得XML文档和string的响应。 你应该可以做到

 success: function(data){ //data.xml check for IE var xmlstr = data.xml ? data.xml : (new XMLSerializer()).serializeToString(data); alert(xmlstr); } 

如果你想要它作为string,为什么你指定dataType:xml不会然后dataType:text更合适?

你也可以在java脚本中轻松地将xml对象转换为string:

 var xmlString = (new XMLSerializer()).serializeToString(xml); 

如果您只需要一个表示从jquery返回的xml的string,只需将您的数据types设置为“text”,而不是试图将xmlparsing回文本。 以下应该只是给你从你的ajax调用回来的原始文本:

 $.ajax({ url: 'document.xml', type: 'GET', dataType: 'text', timeout: 1000, error: function(){ alert('Error loading XML document'); }, success: function(xml){ // do something with xml } }); 

虽然这个问题已经被回答了,但我想指出一个警告:当用Internet Explorer使用jQuery检索XML时, 必须指定content-type为“text / xml”(或“application / xml”),否则你将不能像使用jQuery那样parsing数据。

您可能会认为这是一个显而易见的事情,但是当使用Mozilla / Chrome / Opera而不是IE浏览器时,它引起了我的注意。 当使用内容types为“text”检索XML的“string”时,除IE之外的所有浏览器仍然允许您(使用jQueryselect器)parsing该数据,就像它是XML一样。 IE不会抛出一个错误,并不会返回任何结果到jQueryselect语句。

因此,在您的示例中,只要您只需要XML的string序列化版本,并且不希望jQuery在XML DOM上进行任何select,则可以将content-type设置为“text”。 但是,如果您还需要使用jQueryparsingXML,则需要编写一个自定义例程,将XML序列化为string,或者使用内容types“xml”检索XML版本。

希望能帮助别人:)

您可以获取请求中使用的本机XMLHttpRequest对象。 当我发布这个答案时,jQuery文档陈述了一些方法来做到这一点。

其中之一是通过成功callback的第三个参数:

 success: function(xml, status, xhr){ console.log(arguments); console.log(xhr.responseXML, xhr.responseText); console.log('Finished!'); } 

作为一个完整的例子: https : //jsfiddle.net/44m09r2z/