我正在研究Smooks - Camel Integration.我遇到了错误.当我尝试使用mvn exec运行它时,Build失败了:java
[错误]: 无法在项目上执行目标org.codehaus.mojo:exec-maven-plugin:1.2:java(default-cli) camel-example-smooks-integration:
我的控制台日志如下:
[ERROR] For more information about the errors and possible solutions, please read the following
articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoNotFoundException
C:\apache-camel-2.11.0\examples\camel-example-smooks-integration>mvn exec:java
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for
org.apache.camel:camel-example-smooks-integration:bundle:2.11.0
[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate
declaration of plugin org.codehaus.mojo:exec-maven-plugin @ line 138, column 9
[WARNING]
[WARNING] It is highly recommended to fix these problems …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个freemarker模板,这是一个示例.
<Grantor>
<UniqueID>${(currentGrantorIndex)!?string}</UniqueID> // want to comment this line
<Entity>${(grantor.entityTypeName)!?string}</Entity>
</Grantor>
Run Code Online (Sandbox Code Playgroud)
我想知道如何在freemarker模板中写评论或注释掉几行.任何的想法?
如何使用SMOOKS将XML文件转换为EDI文件?
我能够将EDI转换为XML,实际上这是SMOOKS提供的示例的一部分.
我正在编写一个使用smook将XML文件解析为java对象的程序.我被要求将其作为servlet运行.应用程序(在转换为servlet之前)运行得很好,但每次尝试运行它时tomcat服务器都会崩溃.现在我运行一个没有问题的示例servlet.
这是启动时的控制台:
Jun 11, 2012 3:46:59 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\Common Files\EMC";C:\PROGRA~2\COMMON~1\EMC;.
Jun 11, 2012 3:46:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Serverlet' did not find a matching property.
Jun 11, 2012 3:46:59 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jun 11, 2012 3:46:59 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jun 11, 2012 …
Run Code Online (Sandbox Code Playgroud) 我是个傻笑的初学者.我正面临一个问题.这是java-java转换.我有一个列表,其中有一个包含2个对象的内部列表.如何实现list.list列出smooks中的副本?
涉及WSO2 ESB示例http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processing但遇到一个问题,当一个简单的csv文件
name0,value0
name1,value1
name2,value2
name3,value3
Run Code Online (Sandbox Code Playgroud)
使用此配置由smooks解析
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.1.xsd">
<csv:reader fields="name,value" />
</smooks-resource-list>
Run Code Online (Sandbox Code Playgroud)
导致很大程度上正确的输出,但第一行包括有效负载命名空间,这是不正确的
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<text xmlns="http://ws.apache.org/commons/ns/payload">name0,value0
name1,value1
name2,value2
name3,value3</text>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
所以当读取第一个name0值时,它包括哪个也是不正确的.
Smooks然后将其转换为
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<csv-set>
<csv-record number="1">
<name><?xml version='1.0' encoding='utf-8'?><text xmlns="http://ws.apache.org/commons/ns/payload">name0</name>
<value>value0</value>
</csv-record>
<csv-record number="2">
<name>name1</name>
<value>value1</value>
</csv-record>
<csv-record number="3">
<name>name2</name>
<value>value2</value>
</csv-record>
<csv-record number="4">
<name>name3</name>
<value>value3</text></value>
</csv-record>
</csv-set>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
那么Smooks正在做所有的问题,因为输入包括最后一个?但是,它理解的元素数量被计为4,所以它不像csv应该有一个标题行.我可以通过包含标题行来解决(在某种程度上),但元素计数不正确.我可以通过在csv的最后一行包含一个回车来解决结束.
我该如何解决这个问题?我在一年前找到另一个线程问同样的问题,但没有答案.
我正在做 teplate,我将在 Smooks 转换中使用它。我需要在 freemarker 中获取列表的第二个元素,但我不知道该怎么做。freemarker 模板中有我的代码片段。
<#list partnerList as PARTNER>
${PARTNER.partnrid}
${PARTNER.name}
</#list>
Run Code Online (Sandbox Code Playgroud)
还有java类:
public class Partner {
private String PARTNRID;
private String NAME;
public String getPartnrid() {
return PARTNRID;
}
public void setPARTNRID(String PARTNRID) {
this.PARTNRID = PARTNRID;
}
public String getName() {
return NAME;
}
public void setNAME(String NAME) {
this.NAME = NAME;
}
}
Run Code Online (Sandbox Code Playgroud)
正如我之前所说,我只需要第二个元素。我想避免打印其余项目。谢谢!
当 EDI 文件被格式化为可读性时,我可以使用 Smooks (1.5) 读取该文件
ISA*SD* *DFDF* *SDFDSF*FHGFH *44*GHGHGHG *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~
GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~
GE*YTRY*DF~
IEA*DF*DGHJGHHGG~
Run Code Online (Sandbox Code Playgroud)
为了阅读本文,我使用了以下配置
<medi:delimiters segment=" " field="*"
component="^" sub-component="~" escape="?" />
Run Code Online (Sandbox Code Playgroud)
但当我尝试读取以下具有相同分隔符配置的 EDI(未格式化 EDI)段时,它失败了
ISA*SD* *DFDF* *SDFDSF*FHGFH *44*GHGHGHG *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~GE*YTRY*DF~IEA*DF*DGHJGHHGG~
Run Code Online (Sandbox Code Playgroud)
这里的问题是,所有段代码都在同一行。我知道它无法读取 EDI 段的原因。它失败是因为配置段=“ 

”。是否可以读取这些类型的 EDI 消息?或者这是不切实际的 EDI 消息?我相信 EDI X12 标准不需要回车符和换行符。我想知道如何读取此未格式化的 EDI 以及如何为此未格式化的 EDI 配置分隔符