[根据理解进展重编辑]
是否有可能让Spring Jaxb2Marshaller使用一组自定义的名称空间前缀(或者至少尊重模式文件/注释中给出的名称空间前缀),而不必使用NamespacePrefixMapper的扩展名?
我们的想法是让一个类与另一个类具有"has"关系,而另一个类又包含具有不同命名空间的属性.为了更好地说明这一点,请考虑以下使用JDK1.6.0_12的项目大纲(最新的我可以在工作中得到).我在org.example.domain包中有以下内容:
Main.java:
package org.example.domain;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Main {
public static void main(String[] args) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(RootElement.class);
RootElement re = new RootElement();
re.childElementWithXlink = new ChildElementWithXlink();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(re, System.out);
}
}
Run Code Online (Sandbox Code Playgroud)
RootElement.java:
package org.example.domain;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(namespace = "www.example.org/abc", name="Root_Element")
public class RootElement {
@XmlElement(namespace = "www.example.org/abc")
public ChildElementWithXlink childElementWithXlink;
}
Run Code Online (Sandbox Code Playgroud)
ChildElementWithXLink.java:
package org.example.domain;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
@XmlRootElement(namespace="www.example.org/abc", …Run Code Online (Sandbox Code Playgroud) 只是想知道在搜索xml文档时是否可以忽略c#和xpath的情况?
这更多的是知识共享而不是提问.认为这个小Ant片段可能对某人有用.
<target name="create-jaxb-index" depends="compile">
<!-- Create a suitable jaxb.index file on the fly to remove the need for an ObjectFactory
jaxb.index is a simple list of the domain objects without package or extension, e.g.
org.example.Domain.java -> Domain
-->
<fileset id="domain-sources" dir="${src}">
<include name="org/example/*.java"/>
</fileset>
<pathconvert property="domain-list" refid="domain-sources" pathsep="${line.separator}">
<chainedmapper>
<flattenmapper/>
<globmapper from="*.java" to="*" casesensitive="false"/>
</chainedmapper>
</pathconvert>
<echo file="${target}/classes/org/example/jaxb.index" message="${domain-list}"/>
</target>
Run Code Online (Sandbox Code Playgroud)
好的,好的,所以它不会全部存储并存储所有的包名称,以便它可以重建适当的文件结构,但它足以让你开始.
希望能帮助到你.
此外,您可以将这个小片段(少于目标元素)插入到Maven构建中,如下所示:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<!-- Create a suitable jaxb.index file on the fly …Run Code Online (Sandbox Code Playgroud) 我想修改JAXB编组操作的输出流以包含一些任意XML.这是一个澄清情况的例子.
我有一个Product带有JAXB注释的任意域对象,目前看起来像这样:
@XmlRootElement(name="Product")
public class Product {
@XmlElement(name="CommonProperty")
private String commonProperty="Something";
@XmlElement(name="ExtraXml")
private String extraXml="Something extra";
}
Run Code Online (Sandbox Code Playgroud)
通常会编组进行此操作:
<Product>
<CommonProperty>Something</CommonProperty>
<ExtraXml>Something else</ExtraXml>
</Product>
Run Code Online (Sandbox Code Playgroud)
现在,如果该extraXml字段包含一些额外的XML(任意复杂性),并将其与最终的编组结果一起包含,该怎么办?
说,extraXml包含" <abc><def>Something extra</def></abc>",我真的想要一个能让我Product像这样编组的解决方案(格式化可选):
<Product>
<CommonProperty>Something</CommonProperty>
<abc>
<def>Something extra</def>
</abc>
</Product>
Run Code Online (Sandbox Code Playgroud)
我已经看过这个相关的问题,但它并没有完全产生我所追求的结果,因为它似乎更倾向于整体格式更改而不是DOM插入.
该extraXml属性只是为了说明,它可以标记为@XmlTransient或单个专门的类.唯一的标准是它可以以某种方式获得String包含完全任意的XML内容以附加到单独的Product编组输出.
我还应该提到,由此产生的输出的消费者能够以适合他们的方式解析任意内容.这里的目的是简化服务器端的处理.
提前感谢您提供的任何帮助.
我从我的 Jekyll 网站生成器得到这个输出
Liquid 异常:标记 '{%' 没有用正则表达式正确终止:/\%}/
这是怎么回事?
回顾过去,我不小心将大量Java构件(.war,.jar和.class)提交到了我的GitHub存储库中。这导致大小膨胀到大约100Mb。直到很多提交和分支合并以后我才注意到。
幸运的是,这里有很多信息,因此在不停地浏览StackOverflow,GitHub和Git文档之后(感谢大家!),我终于设法将以下脚本放在一起:
#!/bin/bash
echo "Removing history for *.war, *.jar, *.class files"
echo "Starting size"
git count-objects -v
echo "Removing history for *.war, *.jar, *.class files"
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.war' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.jar' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.class' --prune-empty --tag-name-filter cat -- --all
echo "Purging refs and garbage collection"
# Purge the backups
rm -Rf .git/refs/original …Run Code Online (Sandbox Code Playgroud) 我想强制执行严格的Maven依赖策略,该策略超出了基本checksumPolicy=fail方法.
这是尝试提供针对修改的版本依赖性的保护,该依赖性仍然具有有效的摘要值,也称为"依赖性链攻击".
这种情况可能来自以下情况:
在与其他开发人员的讨论中,一种解决上述问题的方法是在pom.xml中列出已知的MD5/SHA摘要,并让Maven验证下载的依赖项具有相同的摘要.这确保了只要源代码存储库保持安全,就会检测到已被破坏的任何包含的依赖项.
因此我的问题是双重的: