2016-09-21 5 views
0

Ich versuche, ein benutzerdefiniertes JSON durch Extrahieren von Daten mit Xml2parsing zu erstellen. Bisher habe ich dies:xml2js Parsing - Wie Metadaten Attributwert zu extrahieren?

function createCustomJson(d{ 

    let dataFromXml = ""; 
    parseString(d, {trim: true}, function (err, result) { 
     dataFromXml = JSON.stringify(result); 
    }); 
    let dataJson = { data: [] }; 
    let dataObj = JSON.parse(dataFromXml); 
    let dataForJson = dataObj.dataset.data[0]; 
    let metadataForJson = dataObj.dataset.metadata[0];   

    let pom = {}; 
    for (var i = 0; i < dataForJson.row.length; i++) { 
     for (var j = 0; j < dataForJson.row[0].value.length; j++) { 

      pom["METADATA-ATTR-NAME"] = dataForJson.row[i].value[j]; 
     } 
     dataJson.data.push(pom); 
    } 

    let json = JSON.stringify(dataJson); 
} 

xml:

<?xml version="1.0" encoding="utf-8"?> 
<dataset xmlns="http://example.com" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"> 
    <metadata> 
      <item name="DATA_1" type="xs:string" length="2102"/> 
      <item name="DATA_2" type="xs:string" length="24"/> 
    </metadata> 
    <data> 
     <row> 
      <value>active</value> 
      <value>whatever</value> 
     </row> 
    </data> 
</dataset> 

Ich war in der Lage, alle Werte von „Daten“ zu extrahieren, aber nicht wissen, wie die -Metadatenelement Namen zu erhalten (DATA_1 und DATA_2).

In console.log, für

metadataForJson.item[0] 

ich

{ '$': { name: 'DATA_1', type: 'xs:string', length:'2102'} } 

nicht wissen, wie Wert von '$' raus, es gibt mir immer sintax Fehler. Irgendwelche Ideen? Danke!

+0

kann helfen Was Ihre Methode ist "get-Wert von '$' out"? Welche Art von Syntaxfehler erhalten Sie? Können Sie mehr Informationen zur Verfügung stellen? – shaochuancs

Antwort

1

nur versuchen,

metadataForJson.item[0].$.name 

ODER

metadataForJson.item[0]['$'].name 

Dieses Ergebniss zu https://stackoverflow.com/a/22028956/730733

+0

Wow ... Ich war ziemlich sicher, dass ich bereits die erste Option ausprobiert habe, aber ich habe noch einmal überprüft, nur um sicher zu sein, und es funktioniert. – ljerka

+0

Ich kenne dieses Gefühl ... – DaviideSnow

Verwandte Themen