Я борюсь с использованием DOMParser () для анализа моего xml в JSON-объект:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>
<GetPersonByNameSurnamePasswordResponse xmlns="api/PersonService">
<GetPersonByNameSurnamePasswordResult>
<Id>1</Id>
<Name>E</Name>
<Surname>P</Surname>
<Password>s</Password>
<BirthDate>2018-11-06T16:31:32.9001423+02:00</BirthDate>
<Email>davcazv@gmail.com</Email>
</GetPersonByNameSurnamePasswordResult>
</GetPersonByNameSurnamePasswordResponse></soap:Body></soap:Envelope>
Похоже, я получаю все данные (длина и xml} обычно:
Как вы можете видеть на картинке, мой json помещается в 6 раз (столько, сколько имеется данных на моем объекте xml), но JSON отображается не правильно (только фигурные скобки}. Вот мой код:
SignIn.js:
import { getPersonByLoginData} from "./Utils";
login = async() => {
var get = await getPersonByLoginData(this.state.username,
this.state.surname, this.state.password, callback)
.then((response) => {
//console.log(response);
callback = response;
return callback;
})
;
console.log("something");
console.log(callback.data);
var doc = new DOMParser().parseFromString(callback.data, 'text/xml');
var valueXML =
doc.getElementsByTagName('GetPersonByNameSurnamePasswordResult');
var temps = valueXML[0].children;
var nortifications = [];
for (var i = 0; i < temps.length; i++) {
var temp = temps[i].children;
var obj = {};
for (var j = 0; j < temp.length; j++) {
var property = temp[j];
obj[property.localName] = property.innerHTML;
}
console.log(JSON.stringify(obj));
nortifications.push(obj);
}
console.log(valueXML[0].children);
<h3>callback</h3>
};
handleChange = name => event => {
this.setState({
[name]: event.target.value,
});
console.log(this.state);
};
Utils.js:
import axios from 'axios'
export async function getPersonByLoginData(name, surname, password,useCallback)
{
var th = this;
let xmls =
'<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">\
<soap12:Body>\
<GetPersonByNameSurnamePassword xmlns="api/PersonService">\
<name>' + name + '</name>\
<surname>' + surname + '</surname>\
<password>' + password + '</password>\
</GetPersonByNameSurnamePassword>\
</soap12:Body >\
</soap12:Envelope >';
await axios.post('http://localhost:52312/PersonService.asmx?wsdl',
xmls,
{
headers:
{
'Content-Type': 'text/xml',
SOAPAction: "api/PersonService/GetPersonByNameSurnamePassword"
}
}).then(function (response) {
useCallback = response;
//console.log(useCallback);
return useCallback;
/* atsakymas yra res.data */
}).catch(err => {
console.log("unable to load");
});
//console.log(useCallback);
return useCallback;
}