我们正在使用dom4j 1.6.1来解析来自某个地方的XML.有时,应答器提到了命名空间(例如:),有时候没有().并且它调用Element.selectSingleNode(String s)失败.
目前我们有3个解决方案,我们对它们不满意
1 - 在对xml文档执行任何操作之前删除所有命名空间
xml = xml .replaceAll("xmlns=\"[^\"]*\"","");
xml = xml .replaceAll("ds:","");
xml = xml .replaceAll("etm:","");
[...] // and so on for each kind of namespace
Run Code Online (Sandbox Code Playgroud)
2 - 在获取节点之前删除命名空间通过调用
Element.remove(Namespace ns)
Run Code Online (Sandbox Code Playgroud)
但它仅适用于节点和第一级子节点
3 - 使代码混乱
node = rootElement.selectSingleNode(NameWithoutNameSpace)
if ( node == null )
node = rootElement.selectSingleNode(NameWithNameSpace)
Run Code Online (Sandbox Code Playgroud)
所以你怎么看 ?女巫一个是不是更糟糕?你有其他解决方案吗?
我想避免序列化(在JMS/AMF中),但仍然使用JPA/Hibernate保持字段.
是transient修改我的朋友?@Transient注释和transient修饰符是否相关?
java规范精确地指出,瞬态字段不会被系统服务保存到持久存储中.但是hibernate是一个系统服务吗?(我不这么认为) http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#78119
并且java.io.Serialisable接缝表明a out.writeObject and in.readObject要求序列化
http://download.oracle.com/javase/1.4.2/docs/api/java/io/Serializable.html
任何见解?
也许我应该写一个快速测试,但我会对一个规范更有信心.
谢谢 !
我们使用这种小实用方法.但我们不喜欢它.因为它不是非常关键(无论如何......),我们已经忘记了它.
但这很难看,因为我们必须通过整个数组,只是将它转换Byte[]为byte[].
我在看 :
Byte[]在byte[]不经过它的情况下施放
public static String byteListToString(List<Byte> l, Charset charset) {
if (l == null) {
return "";
}
byte[] array = new byte[l.size()];
int i = 0;
for (Byte current : l) {
array[i] = current;
i++;
}
return new String(array, charset);
}
Run Code Online (Sandbox Code Playgroud) 在我们的项目中,我们都有这种枚举.它们工作得很好,但我们不确定它们.
特别是使用getDocumentType(String)方法.
有没有办法避免迭代所有的Enums字段?
public enum DocumentType {
UNKNOWN("Unknown"),
ANY("Any"),
ASSET(Asset.class.getSimpleName()),
MEDIA(Media.class.getSimpleName()),
MEDIA35MM(Media.class.getSimpleName() + " 35mm");
private String label;
private DocumentType(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public static DocumentType getDocumentType(String label){
for(DocumentType documentType : DocumentType.values()){
if(documentType.getLabel().equals(label)){
return documentType;
}
}
return UNKNOWN;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:检查newacct响应.她也没事.
我的问题很简单:
如果我这样做:
public class Main {
public static void main(String[] args) throws Exception {
Date d = new Date(0L );
System.out.println(d);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:Thu Jan 01 01:00:00 CET 1970
根据文件,我期待:1970年1月1日00:00:00 CET 1970年
我想错了......
编辑:的确,我读得太快了.我应该在1970年1月1日00:00:00 GMT
那么,我如何强制使用GMT,并忽略所有当地时间?
编辑,解决方案:
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("H:m:s:S");
SimpleTimeZone tz = new SimpleTimeZone(0,"ID");
sdf.setTimeZone(tz) ;
Date d = new Date(0L );
System.out.println( sdf.format(d));
}
Run Code Online (Sandbox Code Playgroud) 我有一个非常经典的问题:在DAO之外访问Lazy Collection,导致LazyInitializationException.
这是一个干净而合理的解决方案,使用@Transactional这些服务的一些方法,在DAO之外,谁使用这些懒惰的集合?
谢谢
我想知道是否有关于使用过滤器的成本的硬数据?例如,在使用servlet上的遗产来共享行为或使用过滤器之间?
谢谢,
安托万
我开始在教程之外使用 Phoenix 作为一个小用例。到目前为止很好,但我对以下内容感到有些吃惊。
我有一个资源“录音”,我想在 JSON 中的 /api/recordings 和带有模板的 /recording 访问,结果是 HTML。
理想情况下,Ecto 表示将是唯一的,甚至控制器的一部分也将被共享?
现在我要么有 2 个资源记录 API 和记录 HTML,要么有 2 个控制器和 1 个资源。
有什么例子吗?我一直在寻找其中一个,但没有找到用于同一资源的 :api 管道和 :browser 管道。
谢谢
我们正在构建一个webapp,它作为debian包发送给几个客户端.每个客户端运行自己的服务器.但更新和支持由我们完成.我们定期发布产品,版本号干净.大多数用户获得自动更新(通过Puppet),而其他一些用户则没有.
我们希望保留应用程序版本的跟踪(以便允许用户在"关于"部分中检查版本,以及我们支持更准确地帮助用户).
我们计划在我们的数据库中存储代码版本和基础版本,并自动保持信息的最新状态.
这是一个好主意吗 ?
我们看到的另一种选择是文件.
编辑:代码和数据库架构一起更新.(如果我们更新到版本xyz,代码和数据库都转到xyz)
通过工作,我的意思是:项目渲染器如何实现,调用,破坏......什么是生命周期?
我有一些显示错误,这个链接打开了我的想法 http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=cellrenderer_072_14.html
(flex3的文档是相同的)
但我想知道更多.任何链接或知识分享?
java ×7
hibernate ×2
apache-flex ×1
arrays ×1
bytearray ×1
correctness ×1
database ×1
date ×1
dom4j ×1
ecto ×1
elixir ×1
enums ×1
epoch ×1
itemrenderer ×1
jpa ×1
namespaces ×1
performance ×1
persistence ×1
servlets ×1
spring ×1
transactions ×1
versioning ×1