2013-02-01 1 views
-1

Salut J'ai une chaîne qui vient du noeud XML, et je dois diviser la chaîne et obtenir la valeur "filename =" dans une chaîne et tout le bloc de based64 dans d'autres pour pouvoir le décoder et créer le fichier. J'utilise Split ("\ n") mais je crée une ligne pour chaque ligne et ce n'est pas nécessaire. Toute idée?Comment diviser une chaîne complexe pour obtenir le nom de fichier et la chaîne base64

<Attachment> 
     --boundaryfIudow== 
     Content-Type: application/octet-stream; name="IERL4-12-61.pdf" 
     Content-Disposition: attachment; name="IERL4-12-61.pdf"; 
     filename="IERL4-12-61.pdf" 
     Content-Transfer-Encoding: base64 

     JVBERi0xLjUNJeLjz9MNCjI4MzQgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMTAxNTkyOS9PIDI4 
     MzcvRSAxMDIyOTMvTiA0Mi9UIDEwMTUxMjkvSCBbIDU4MiA1MDZdPj4NZW5kb2JqDSAgICAgICAg 
     DQoyODU1IDAgb2JqDTw8L0RlY29kZVBhcm1zPDwvQ29sdW1ucyA1L1ByZWRpY3RvciAxMj4+L0Zp 
     bHRlci9GbGF0ZURlY29kZS9JRFs8QTlCNjc4ODAwODkwODg0QjgyQURCRDk5N0U4OERERTY+PERD 
     RDYyNDA0OTNDQUUyNDE5MjkwNzc4OEMyMUE1MEEyPl0vSW5kZXhbMjgzNCA3MF0vSW5mbyAyODMz 
     IDAgUi9MZW5ndGggMTEwL1ByZXYgMTAxNTEzMC9Sb290IDI4MzUgMCBSL1NpemUgMjkwNC9UeXBl 
     L1hSZWYvV1sxIDMgMV0+PnN0cmVhbQ0KaN5iYmRgEGBgYmBgMQCRDLtBJKMZmNwCIll3gkhmQbAI 
     WA3LOjAJES8Gs0+ASUkQyTQJzJYDy64AkYaNQJKR6xGIrSIDNucVmBQFkv9LWBiYGBm4F4FtZ2Ac 
     LKTAy0Hhkv8M3xVeAQQYAET0ENYNCmVuZHN0cmVhbQ1lbmRvYmoNc3RhcnR4cmVmDQowDQolJUVP 
     Rg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 
     ICAgICAgICAgIA0KMjkwMyAwIG9iag08PC9DIDUzNS9GaWx0ZXIvRmxhdGVEZWNvZGUvSSA1NTcv 
     TGVuZ3RoIDQxMC9PIDUxOS9TIDQzMz4+c3RyZWFtDQpo3mJgYGBiYGA2Z2BhYODLYRBkQABBBmYG 
     VqA4xwcGBgETZ0MGBgUk2b1/mCIbzigELuC7wX2DxYbVfvNGh0NSr/TEfzImhL4R/iPyiZG1tfvQ 
     LkU/h2iOoBKmByJ7WNNZ9RlzHCccSN6QeENrmoAnZ0CbGVOdY6HClA43HgU3wZtMx4Am79RUzt0e 
     mxd2txRI7o7dAhRid/aWkmV3vBQly9soN0PWxaqjVOCVFU+JxAujni8S7UE9h1e0B/ItdngVOAMo 
     oXjFeaVbIpQASaz2Zg/jW50FJNbIJl2/kLvg0XW+jdntYSAicquJzK0GxowG1owGBgbRBrYGwQYO 
     Bihi7mBoYOoAMTsYJCBiHkAcgWCCcAMrUAlLB4MGmM8CUkq70AGCDAZu+UJwBDEwSINFXgHZqQyf 
     D7g8YEkQU+C2YRViusc4vUGLIa1B+2HNHuUHbilAVaKrlzZIBkxmrPRg+BlyXyiIIYCBv+HAA4ih 
     3GoMjF1lQAYjMDmoAukiBr4rRhAbpqXDo72fgb8qF6KK4TNAgAEAW6qi8w0KZW5kc3RyZWFtDWVu 
     ZG9iag0yODM1IDAgb2JqDTw8L0xhbmcoZW4tVVMpL01hcmtJbmZvPDwvTWFya2VkIHRydWU+Pi9N 
     ZXRhZGF0YSAxNDEgMCBSL09wZW5BY3Rpb24gMjgzNiAwIFIvT3V0bGluZXMgMjg4MCAwIFIvUGFn 
     --boundaryfIudow==-- 
    </Attachment> 

Répondre

1

Ici, vous allez (src est votre chaîne source):

var split = src.Split('\n').Select(p => p.Trim()).ToList(); 

var filename = split.First(p => p.StartsWith("filename=")); 
filename = filename.Substring(10, filename.Length - 11); 

var base64 = split[split.Count - 2]; 
+0

Merci beaucoup, mais je reçois une erreur "message = séquence ne contient aucun élément correspondant" dans ce fichier ligne var = split.First (p => p.StartsWith ("filename =")); mais le "nom de fichier =" existe .. – marinho

+0

Ensuite, il n'est pas divisé correctement. Voir dans Déboguer les valeurs que vous obtenez en séparant votre chaîne. Voici mon code: [pastebin] (http://pastebin.com/u3QBXwn9) – Artless

+0

Je reçois ce "nom de fichier = \" IERL4-12-61.pdf \ "" dans la ligne spécifique – marinho

0

Si vous avez déjà le XMLNode, l'utiliser. L'analyser en un élément.

XmlElement attachment = (XmlElement)node; 
var filename = attachment.GetAttribute("filename").FirstOrDefault(); 
+0

Ce n'est pas un attribut, c'est du texte brut dans l'élément. – Artless

Questions connexes