强大和提取嵌套的文件数据 - Express 4和强大
问题描述:
我有强大的接受来自外部服务器的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>
答
您可以通过使用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');
});
});
经过一些修改,这对我正在尝试完成的工作非常有效。感谢您的回应。 – 2014-10-19 23:15:25