mhjzqq923
2009-04-21 14:37 阅读 265

jquery 读取xml文件时遇到的问题。

用jquery读取xml的时候出现这样的问题。
xml中没有中文的时候没有问题, 只要数据是中文的就会失败,请教下为什么?
代码:
<?xml version="1.0" encoding="UTF-8"?>

test测试
222333333333

js:
$.ajax({

ContentType: "text/xml;UTF-8",
url:'secondclass1.xml',

type:'GET',

dataType:"xml",

timeout:1000,

error:function(xml){alert('Error Loading XML document' + xml);},

success:function(xml){

alert(xml);

$(xml).find("aaa").each(function(i){

var id = $(this).children("id"); //取对象

var id_value = id.text(); //取文本 或者 $("id",xml).text();
alert(id_value);
var name = $(this).children("name"); //取对象

var name_value = name.text(); //取文本 或者 $("id",xml).text();

alert(name_value);
});

 }    

});

[b]问题补充:[/b]

lovewhzlq (架构师)

试了, 还是不行。

不过我用其他方法又遇到了其他的问题, 看你能解决不。

我用别的方法去读xml,用jquery去解析。
$(oxml).find("secondclass > class").each(function(){
alert("111");

});

secondclass 是根目录,class是二级。

这一句死活不执行, 我alert(oxml);显示[Object]

请教
[b]问题补充:[/b]

lovewhzlq (架构师)

是的;IE7
[b]问题补充:[/b]

lovewhzlq (架构师)

多谢,这一步已经按你的提示完成,
但又遇到个问题,
我的xml文件是动态用dom4j来生成的,如果用记事本另存为utf-8格式的,是没有问题的。
但我不知道dom4j怎么去设置文本本身的格式,所以到这一步的时候无法执行。
$(xml).find("aaa").each(function(i){

var id = $(this).children("id"); //取对象

var id_value = id.text(); //取文本 或者 $("id",xml).text();

alert(id_value);

var name = $(this).children("name"); //取对象

var name_value = name.text(); //取文本 或者 $("id",xml).text();

alert(name_value);

});

不会去遍历,有解决方法吗?谢谢
[b]问题补充:[/b]

lovewhzlq (架构师)

谢谢,问题解决!
在用dom4j时,不应该用FileWriter对象来构建xml文档,而应该使用FileOutputStream对象来构建,这样生成的文本本身的编码是utf-8的!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    wanghaolovezlq wanghaolovezlq 2009-04-21 16:52
  • wanghaolovezlq wanghaolovezlq 2009-04-21 14:58

    [color=red]ContentType: "text/xml;charset=UTF-8", [/color]

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-04-21 15:49

    你用的是ie吗?

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-04-21 15:53

    对于ie的情况加这部分处理更好

    [code="java"]
    $.ajax({

    ContentType: "text/xml;UTF-8",
    url:'secondclass1.xml',

    type:'GET',

    timeout:1000,

    error:function(xml){alert('Error Loading XML document' + xml);},

    [color=red]dataType: ($.browser.msie) ? "text" : "xml",
    success: function(data){
    var xml;
    if (typeof data == "string") {
    xml = new ActiveXObject("Microsoft.XMLDOM");
    xml.async = false;
    xml.loadXML(data);
    } else {
    xml = data;
    }[/color]
    alert(xml);

    $(xml).find("aaa").each(function(i){

    var id = $(this).children("id"); //取对象

    var id_value = id.text(); //取文本 或者 $("id",xml).text();
    alert(id_value);
    var name = $(this).children("name"); //取对象

    var name_value = name.text(); //取文本 或者 $("id",xml).text();

    alert(name_value);
    });

    }

    });

    [/code]

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-04-21 16:52

    import java.io.OutputStream;

    import org.dom4j.Document;
    import org.dom4j.io.XMLWriter;
    import org.dom4j.io.OutputFormat;

    public class DeployFileCreator {

    private Document doc;

    public void serializetoXML(OutputStream out, String aEncodingScheme) throws Exception {
    OutputFormat outformat = OutputFormat.createPrettyPrint();
    //设置文本的编码
    outformat.setEncoding(aEncodingScheme);
    XMLWriter writer = new XMLWriter(out, outformat);
    writer.write(this.doc);
    writer.flush();
    }

    }

    看看下面文章就行了

    http://www.blogjava.net/junglesong/archive/2008/02/21/181196.html

    点赞 评论 复制链接分享

相关推荐