【问题标题】:Converting xml file data in js object在js对象中转换xml文件数据
【发布时间】:2020-09-27 13:15:20
【问题描述】:

我需要一些帮助。我有一个应用程序通过输入类型文件获取 *.xml 文件,并将其转换为 js 对象。 为此,我从这里使用 FileReader 和 xml-js 库https://www.npmjs.com/package/xml-js

现在我有两个无法处理的问题。

  1. xml 文件包含西里尔符号,在控制台中它们显示为 ������ ������
  1. 第二个问题是,由于某些原因,我无法将转换后的对象设置为状态。

这是我的代码: 文件的处理程序和输入:

handleFile = (event) => {
    let file = event.target.files[0];
    let reader = new FileReader();
    reader.readAsText(file);
    reader.onloadend = () => {
        let json = xmljs.xml2js(reader.result, {compact: true, spaces: 4});
        this.setState({
            file: json
        }, console.log ('file', json))
    }
};

render() {

    return (
        <div>
            <input type="file" onChange={this.handleFile}/>
        </div>
    )
}

那么我应该怎么做才能显示西里尔符号以及如何将对象设置为状态?

【问题讨论】:

    标签: reactjs xml filereader libxml-js


    【解决方案1】:

    我修好了。 现在我的代码看起来是这样的:

    handleFile = (event) => {
        let file = event.target.files[0];
        let reader = new FileReader();
        reader.readAsText(file, 'windows-1251');
        reader.onloadend = () => {
            let json = xmljs.xml2js(reader.result, {compact: true, spaces: 4});
            this.setState({
                file: json
            }, () => {console.log('state', this.state)})
        }
    };
    
    render() {
    
        return (
            <div>
                <input type="file" onChange={this.handleFile}/>
            </div>
        )
    }
    

    我添加了“windows-1251”来定义编码类型,它有助于西里尔符号。 我也将 setState 之后的回调函数更改为 () => {console.log('state', this.state)} 之后我可以看到当前状态,内容来自 xml 文件。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2022-11-09
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多