2016-07-29 7 views
0

Ich versuche, eine einfache XMl-Datei vom Datenträger gelesen zu analysieren und diese in JSON zu konvertieren und mit Mulesoft wieder in eine Datei zu speichern.Analysieren einer XML-Datei mit Mulesoft

Dies ist, wie das Maultier flow.xml wie

sieht
<file:connector name="File" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/> 
    <file:connector name="File1" outputPattern="sample1.txt" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/> 
    <flow name="datatranformerFlow"> 
     <file:inbound-endpoint path="C:\Madhu" name="sample.xml" responseTimeout="10000" doc:name="File" connector-ref="File"/> 
     <file:file-to-string-transformer mimeType="application/xml" doc:name="File to String"/> 
     <splitter expression="#[xpath3('/Names/Name')]" doc:name="Splitter"/> 
     <json:xml-to-json-transformer doc:name="XML to JSON"/> 
     <file:outbound-endpoint path="C:\Madhu\GV dev documents\WD files" connector-ref="File1" responseTimeout="10000" doc:name="File"/> 
    </flow> 

Die Probe XML-Datei, die ich aussieht versuche wie

<Names> 
    <Name> 
     <title>bnbnbha</title> 
     <firstname>aa</firstname> 
     <lastname>aaa</lastname> 
    </Name> 
    <Name> 
     <title>bjkjkjk</title> 
     <firstname>bb</firstname> 
     <lastname>bbb</lastname> 
    </Name> 
    <Name> 
     <title>hjhjhc</title> 
     <firstname>cc</firstname> 
     <lastname>ccc</lastname> 
    </Name> 
    <Name> 
     <title>djkjkj</title> 
     <firstname>dd</firstname> 
     <lastname>ddd</lastname> 
    </Name> 
</Names> 

zu analysieren Wenn ich das mule Projekt laufen, ich bin immer eine Ausnahme

INFO 2016-07-29 11: 56: 25,287 [[datatranformer] .File.receiver.01] org.mule.transport.file.FileMessageReceiver: Sperre in Datei erhalten: C: \ Madhu \ sample. xml INFO 2016-07-29 11: 56: 26,193 [[datatranformer] .datratranformerFlow.stage1.02] org.mule.routing.ExpressionSplitter: Der Ausdruck wird nicht zu einem Typ ausgewertet, der geteilt werden kann: java.lang.String FEHLER: 'Unerwartetes Zeichen' b '(Code 98) im Prolog; erwartet '<' bei [Zeile, Spalte {unbekannte Quelle}]: [2,3] ' FEHLER 2016-07-29 11: 56: 26,272 [[datatranformer] .datratranformerFlow.stage1.02] org.mule. exception.DefaultMessagingExceptionStrategy:


Nachricht: com.ctc.wstx.exc.WstxUnexpectedCharException: unerwartetes Zeichen 'b' (Code 98) in prolog; erwartet '<' auf [Zeile, Spalte {unknown-source}]: [2,3] (javax.xml.transform.TransformerException) Nutzlast: bnbnbha aa aaa

Gibt es etwas, was ich tue, falsch ?

Antwort

0

Können Sie nur verwenden # [xpath3 (‚/ Names‘)]

1

Wenn Ihr Zweck nur eine XML-Datei zu lesen, wandeln es in JSON, und speichern Sie es (ohne weiteren Prozess) Datei entfernen Sie dann die Datei zu String Transformator und der Splitter Flusskontrolle.

<flow name="datatranformerFlow"> 
    <file:inbound-endpoint path="C:\Madhu" name="sample.xml" responseTimeout="10000" doc:name="File" connector-ref="File"/> 
    <json:xml-to-json-transformer doc:name="XML to JSON"/> 
    <file:outbound-endpoint path="C:\Madhu\GV dev documents\WD files" connector-ref="File1" responseTimeout="10000" doc:name="File"/> 
</flow> 
+0

tun können diese einer funktioniert .. danke –

0

einfach den Splitter Ausdruck entfernen, wie Sie erwähnt haben, Sie wollen einfach nur in csv diese Datei konvertieren, überprüfen Sie bitte die unten fließen:

Sie also so geworden Konfiguration

<?xml version="1.0" encoding="UTF-8"?> 
 

 
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" 
 
\t xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
 
\t xmlns:spring="http://www.springframework.org/schema/beans" 
 
\t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
\t xsi:schemaLocation="http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd"> 
 
    <file:connector name="File" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/> 
 
    <file:connector name="File1" outputPattern="sample1.txt" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/> 
 
    <flow name="datatranformerFlow"> 
 
     <file:inbound-endpoint path="C:\madhu" connector-ref="File" responseTimeout="10000" doc:name="File"/> 
 
     <file:file-to-string-transformer doc:name="File to String"/> 
 
     <json:xml-to-json-transformer mimeType="application/json" doc:name="XML to JSON"/> 
 
     <logger message="payload--&gt; #[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/> 
 
    <file:outbound-endpoint path="C:\Madhu\GV dev documents\WD files" connector-ref="File1" responseTimeout="10000" doc:name="File"/> 
 
    </flow> 
 
</mule>

Hoffe, das hilft!

0

Es gibt viele Möglichkeiten, es zu tun

  1. können Sie XPath verwenden
  2. Sie tun können, es durch Nachrichtenkomponente
  3. verwandeln Sie es von JSON zu XML Konverter