在 js 对象中转换 xml 文件数据
Converting xml file data in js object
我需要一些帮助。我有一个应用程序通过输入类型文件获取 *.xml 文件,并将其转换为 js 对象。
为此,我使用了 FileReader 和 xml-js 库 https://www.npmjs.com/package/xml-js
现在我有两个问题无法处理
- xml 文件包含西里尔符号,在控制台中它们显示为 �������� ���� ����
- 第二个问题是,由于某些原因,我无法在状态中设置转换后的对象。
这是我的代码:
文件的处理程序和输入:
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>
)
}
那么我应该怎么做才能显示西里尔符号以及如何将对象设置为状态?
我修好了。
现在我的代码看起来是这样的:
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 文件的内容.
我需要一些帮助。我有一个应用程序通过输入类型文件获取 *.xml 文件,并将其转换为 js 对象。 为此,我使用了 FileReader 和 xml-js 库 https://www.npmjs.com/package/xml-js
现在我有两个问题无法处理
- xml 文件包含西里尔符号,在控制台中它们显示为 �������� ���� ����
- 第二个问题是,由于某些原因,我无法在状态中设置转换后的对象。
这是我的代码: 文件的处理程序和输入:
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>
)
}
那么我应该怎么做才能显示西里尔符号以及如何将对象设置为状态?
我修好了。 现在我的代码看起来是这样的:
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 文件的内容.