如果这个问题很抱歉,可能是因为我对节点/ npm领域缺乏了解。

我创建了我的第一个ember Web应用程序

我用npn和bower安装xml2json并添加

app.import('node_module/xml2json/xml2json.js')


在ember_build_cli.js中,然后返回app.toTree();

我通过generate添加了自定义路由,并添加了一个应读取xml的函数,将其转换为json并输出数据

/myapp/app/routes/getxml.js

import Ember from 'ember';
export default Ember.Route.extend({
model() {
  return Ember.$.ajax({
   url: "data/test.xml",
    dataType:"xml"
  }).done(function(xmlData){
      var jsonData = xml2json.xml_to_object(xmlData);
      return jsonData;
 });
}
});


/myapp/app/data/test.xml

<ART>
<CD>
<ID>1</ID>
</CD>
<CD>
<ID>2</ID>
</CD>
</ART>


我有一个xml2json无法正常工作的问题。由于我能够在Firefox中安装Ember Inspector,因此我遇到了以下错误:

TypeError: xmlcode.replace is not a function


据我了解,xml2json已正确导入,但Ember / Firefox无法理解xml2json库中的代码xmlcode.replace。

我在安装应用程序时错过了什么吗?

编辑:

从开始创建应用程序后
和仅通过Bower安装来安装xml2json



  app.import('bower_components / xml2json / xml2json.js')


在/myapp/ember-cli-build.js中
当运行ember服务器时,我看到


  route / getxml.js:第9行,第22列,未定义“ xml2json”


但是在Firefox Dev Console中,我看到了:


  XML分析错误:语法错误位置:http://localhost:4200/getxml
  第1行,第1列:


仅此而已。
现在我不确定是否已加载xml2json(因为存在XML解析错误)或由于未定义ember cli状态而无法确定。

编辑3:

/myapp/app/routes/getxml.js

    import Ember from 'ember';

    export default Ember.Route.extend({
    model() {
      return Ember.$.ajax({
       url: "http://127.0.0.1/GetXML.xml",
       dataType: 'xml'
  }).done(function(xmlData){
    var jsonData = xml2json.xml_to_object(JSON.stringify(xmlData));
    console.log('result', jsonData);
    return jsonData;
  }).fail(function(error){
    console.log('error ', error);
  });
}
});


在Firefox控制台内部的控制台中打印未定义的结果。

最佳答案

app.import('node_module / xml2json / xml2json.js')


app.import仅用于vendorbower_components文件。不适用于节点模块。


  我用npn和bower安装xml2json并添加


为模块选择NPM或Bower,但不能两者都选。


如果选择凉亭安装,则bower install xml2json并包含app.import('bower_components/xml2json/xml2json.js')
如果您选择npm,请按照以下步骤操作,
需要安装browserify,然后安装所需的npm模块。
npm install ember-browserify --save-dev然后
npm install xml2json --save-dev。您需要将其导入到想要访问的文件中
import xml2json from 'npm:xml2json';



  网址:“ http://127.0.0.1:8080/GetXML


确保此端点返回xml响应。


  xml2json.xml_to_object(xmlData);


我看到toJsontoXml进行了转换,而不是xml_to_object

关于javascript - Ember第一个应用程序将无法识别xml2json中的xml代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40140327/

10-09 21:42