我们正在设计一个处理XML消息的系统.
处理Java类需要从较大的XML中分离出各种属性和值,并将这些作为参数传递给各个处理程序类以进行各种操作.
我们考虑过以下选项:
一个)
将整个XML传递给每个处理程序并让它提取相关的位 - 但是觉得每次传递XML可能效率低下
B)
将XML转换为DTO或一组较小的DTO,并将每个DTO传递给相关的处理程序
C)
将XML剪切成片段并将其传递给每个处理程序方法
我们对这些中的每一个都不满意,所以有什么建议要走哪条路?
示例XML
<IdAction>supplied</IdAction>
<RegId>true</RegId>
<DeRegId>false</DeRegId>
<SaveMessage>false</SaveMessage>
<ServiceName>abcRequest</ServiceName>
<timeToPerform>3600</timeToPerform>
<timeToReceipt/>
<SendToBES>true</SendToBES>
<BESQueueName>com.abc.gateway.JMSQueue.forAddRequest</BESQueueName>
<BESTransform/>
<BESJMSProperties>
<property>
<propName>stateCode</propName>
<propValue>OK</propValue>
</property>
<property>
<propName>stateResponse</propName>
<propValue>OK</propValue>
</property>
</BESJMSProperties>
Run Code Online (Sandbox Code Playgroud)
这包含由4个处理程序处理的4个块
<IdAction>supplied</IdAction>
<RegId>true</RegId>
<DeRegId>false</DeRegId>
Run Code Online (Sandbox Code Playgroud)
另一个
<timeToPerform>3600</timeToPerform>
<timeToReceipt/>
Run Code Online (Sandbox Code Playgroud)
接下来呢
<SendToBES>true</SendToBES>
<BESQueueName>com.abc.gateway.JMSQueue.forAddRequest</BESQueueName>
<BESTransform/>
<BESJMSProperties>
<property>
<propName>stateCode</propName>
<propValue>OK</propValue>
</property>
<property>
<propName>stateResponse</propName>
<propValue>OK</propValue>
</property>
</BESJMSProperties>
Run Code Online (Sandbox Code Playgroud)
等等
我们有以下示例:
< Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)
如何使"keystoreFile"指向环境变量?$ {env.CATALINA_HOME} /conf/file.jks对我不起作用.谢谢.
是否有一个Ibatis设置来查看生成的SQL,就像Hibernate如何显示show_sql = true一样?
谢谢
我有以下脚本,它根据数组标识我要删除的文件中的行但不删除它们.
我应该改变什么?
sourcefile = "C:\\Python25\\PC_New.txt"
filename2 = "C:\\Python25\\PC_reduced.txt"
offending = ["Exception","Integer","RuntimeException"]
def fixup( filename ):
print "fixup ", filename
fin = open( filename )
fout = open( filename2 , "w")
for line in fin.readlines():
for item in offending:
print "got one",line
line = line.replace( item, "MUST DELETE" )
line=line.strip()
fout.write(line)
fin.close()
fout.close()
fixup(sourcefile)
Run Code Online (Sandbox Code Playgroud) 从处理或优化的角度来看,哪2个更好?
我觉得选项1更具可读性,但我被告知选项2更有效率.是这样吗?
if (value != null) {
if (value.equalsIgnoreCase(ApplicationConstants.A)) {
} else if (value.equalsIgnoreCase(ApplicationConstants.B)) {
}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.A))) {
} else if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.B))) {
}
Run Code Online (Sandbox Code Playgroud)