javascript - är det möjligt att läsa varje nod från xml
Jag använder Angular 7.
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<Employees>
<Employee>
<Name>nameOne</Name>
<Id>IdOne</Id>
</Employee>
<Employee>
<Employee-Name>empName</Employee-Name>
</Employee>
<Employee>
<Employee-Id>IdEmp</Employee-Id>
</Employee>
</Employees>
</note>
Kunder laddar upp olika .XML-filer och varje fil måste ha
, men föräldranoden kan vara olika i de uppladdade filerna. behöver läsa varje nod och jämföra om det finns eller inte, om ja så kommer vi att använda det id:t
min kod
const parser = new xml2js.Parser({ strict: false, trim: true });
parser.parseString(uploadedXMLData, (err, result) => {
const obj: any[] = result;
console.log(result);
Object.entries(obj).forEach((data, index) => {
console.log('Data::: ', data, index);
data[0]['NOTE'].forEach((empData, indexNumber) => {
console.log('Emp Data::: ', empData, indexNumber);
});
});
});
- Men med denna kod kan man få ett specifikt nodvärde som empData.Employee[1].EmployeeName[1].Employee-Name
- Hur man skriver ut varje nod
- tack på förhand
Svar #1
För att nå varje nod, oavsett XML-strukturen, behöver du använda rekursion, som här:
function printNode(xml, key?) {
if (xml == null) {
console.log(`Node is empty`);
return;
}
if (Array.isArray(xml)) {
return xml.forEach((v) => printNode(v, key));
}
if (typeof xml === 'object') {
return Object.entries(xml).forEach(([key, v]) => printNode(v, key));
}
console.log(`${key}:${xml}`);
}
