2014-10-19 56 views
0

我有強大的接受來自外部服務器的POST請求,並且從現在開始,我只是將它從POST中分發出原始數據,在這種情況下,它是XML 。強大和提取嵌套的文件數據 - Express 4和強大

我在後的所有關心的是一個Base64字符串,這樣我就可以解碼它並將其作爲圖像文件存儲,但它嵌套很深,儘管我盡了最大的努力,但我無法弄清楚如何挖掘到xml文件中以提取Base64字符串。

這就是返回的值是這樣的:

{ xml: '<?xml version="1.0"?> 
<InboundPostRequest> 
    <AccessControl> 
     <UserName>test</UserName> 
     <Password>test</Password> 
    </AccessControl> 
    <RequestControl> 
     <RequestDate>08/18/2005 12:02:25</RequestDate> 
     <RequestType>New Inbound</RequestType> 
    </RequestControl> 
    <FaxControl> 
     <AccountID>1234567890</AccountID> 
     <NumberDialed>0987654321</NumberDialed> 
     <DateReceived>08/18/2005 12:02:13</DateReceived> 
     <FaxName>SampleOut</FaxName> 
     <FileType>pdf</FileType> 
     <PageCount>5</PageCount> 
     <CSID>8587123600</CSID> 
     <ANI>8587123600</ANI> 
     <Status>0</Status> 
     <MCFID>12345678</MCFID> 
     <UserFieldControl> 
      <UserFieldsRead>2</UserFieldsRead> 
      <UserFields> 
       <UserField> 
        <FieldName>Customer Name</FieldName> 
        <FieldValue>John Doe</FieldValue> 
       </UserField> 
       <UserField> 
        <FieldName>PIN Number</FieldName> 
        <FieldValue>1234</FieldValue> 
       </UserField> 
      </UserFields> 
     </UserFieldControl> 
     <BarcodeControl> 
      <BarcodesRead>5</BarcodesRead> 
      <Barcodes> 
       <Barcode> 
        <Key>EFAXTEST1A</Key> 
        <AdditionalInfo> 
         <ReadSequence>1</ReadSequence> 
         <ReadDirection>2-Dimentional</ReadDirection> 
         <Symbology>DATAMATRIX</Symbology> 
         <CodeLocation> 
          <PageNumber>1</PageNumber> 
          <PageCoordinates> 
           <StartEdge> 
            <XStartPointA>278.0</XStartPointA> 
            <YStartPointA>577.0</YStartPointA> 
            <XStartPointB>278.0</XStartPointB> 
            <YStartPointB>299.0</YStartPointB> 
           </StartEdge> 
           <EndEdge> 
            <XEndPointA>545.0</XEndPointA> 
            <YEndPointA>299.0</YEndPointA> 
            <XEndPointB>545.0</XEndPointB> 
            <YEndPointB>577.0</YEndPointB> 
           </EndEdge> 
          </PageCoordinates> 
         </CodeLocation> 
        </AdditionalInfo> 
       </Barcode> 
       <Barcode> 
        <Key>EFAXTEST2A</Key> 
        <AdditionalInfo> 
         <ReadSequence>1</ReadSequence> 
         <ReadDirection>2-Dimentional</ReadDirection> 
         <Symbology>DATAMATRIX</Symbology> 
         <CodeLocation> 
          <PageNumber>2</PageNumber> 
          <PageCoordinates> 
           <StartEdge> 
            <XStartPointA>278.0</XStartPointA> 
            <YStartPointA>600.0</YStartPointA> 
            <XStartPointB>278.0</XStartPointB> 
            <YStartPointB>320.0</YStartPointB> 
           </StartEdge> 
           <EndEdge> 
            <XEndPointA>545.0</XEndPointA> 
            <YEndPointA>320.0</YEndPointA> 
            <XEndPointB>545.0</XEndPointB> 
            <YEndPointB>600.0</YEndPointB> 
           </EndEdge> 
          </PageCoordinates> 
         </CodeLocation> 
        </AdditionalInfo> 
       </Barcode> 
       <Barcode> 
        <Key>EFAXTEST3A</Key> 
        <AdditionalInfo> 
         <ReadSequence>1</ReadSequence> 
         <ReadDirection>2-Dimentional</ReadDirection> 
         <Symbology>DATAMATRIX</Symbology> 
         <CodeLocation> 
          <PageNumber>3</PageNumber> 
          <PageCoordinates> 
           <StartEdge> 
            <XStartPointA>277.0</XStartPointA> 
            <YStartPointA>608.0</YStartPointA> 
            <XStartPointB>277.0</XStartPointB> 
            <YStartPointB>328.0</YStartPointB> 
           </StartEdge> 
           <EndEdge> 
            <XEndPointA>545.0</XEndPointA> 
            <YEndPointA>328.0</YEndPointA> 
            <XEndPointB>545.0</XEndPointB> 
            <YEndPointB>608.0</YEndPointB> 
           </EndEdge> 
          </PageCoordinates> 
         </CodeLocation> 
        </AdditionalInfo> 
       </Barcode> 
       <Barcode> 
        <Key>EFAXTEST4A</Key> 
        <AdditionalInfo> 
         <ReadSequence>1</ReadSequence> 
         <ReadDirection>2-Dimentional</ReadDirection> 
         <Symbology>DATAMATRIX</Symbology> 
         <CodeLocation> 
          <PageNumber>4</PageNumber> 
          <PageCoordinates> 
           <StartEdge> 
            <XStartPointA>277.0</XStartPointA> 
            <YStartPointA>608.0</YStartPointA> 
            <XStartPointB>277.0</XStartPointB> 
            <YStartPointB>328.0</YStartPointB> 
           </StartEdge> 
           <EndEdge> 
            <XEndPointA>545.0</XEndPointA> 
            <YEndPointA>328.0</YEndPointA> 
            <XEndPointB>545.0</XEndPointB> 
            <YEndPointB>608.0</YEndPointB> 
           </EndEdge> 
          </PageCoordinates> 
         </CodeLocation> 
        </AdditionalInfo> 
       </Barcode> 
       <Barcode> 
        <Key>EFAXTEST5A</Key> 
        <AdditionalInfo> 
         <ReadSequence>1</ReadSequence> 
         <ReadDirection>2-Dimentional</ReadDirection> 
         <Symbology>DATAMATRIX</Symbology> 
         <CodeLocation> 
          <PageNumber>5</PageNumber> 
          <PageCoordinates> 
           <StartEdge> 
            <XStartPointA>277.0</XStartPointA> 
            <YStartPointA>608.0</YStartPointA> 
            <XStartPointB>277.0</XStartPointB> 
            <YStartPointB>328.0</YStartPointB> 
           </StartEdge> 
           <EndEdge> 
            <XEndPointA>545.0</XEndPointA> 
            <YEndPointA>328.0</YEndPointA> 
            <XEndPointB>545.0</XEndPointB> 
            <YEndPointB>608.0</YEndPointB> 
           </EndEdge> 
          </PageCoordinates> 
         </CodeLocation> 
        </AdditionalInfo> 
       </Barcode> 
      </Barcodes> 
     </BarcodeControl> 
     <FileContents>//This is the Element I need to extract for decoding. 
         //I Removed the Base 64 String for Legibility 
     </FileContents> 
    </FaxControl> 
</InboundPostRequest> 

回答

0

您可以通過使用xml2js得到XML的確切節點,這裏是讓你的節點樣本。

var fs = require('fs'), 
     xml2js = require('xml2js'); 

    var parser = new xml2js.Parser(); 
    fs.readFile(__dirname + '/foo.xml', function(err, data) { 
     parser.parseString(data, function (err, result) { 
      console.dir(result['InboundPostRequest']['FaxControl'][0]['FileContents']); 
      console.log('Done'); 
     }); 
    }); 
+0

經過一些修改,這對我正在嘗試完成的工作非常有效。感謝您的迴應。 – 2014-10-19 23:15:25