小编Gar*_*owe的帖子

在不使用NamespacePrefixMapper的情况下定义Spring JAXB名称空间

[根据理解进展重编辑]

是否有可能让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)

java xml spring jaxb

25
推荐指数
2
解决办法
5万
查看次数

是否可以使用xpath和c#忽略大小写?

只是想知道在搜索xml文档时是否可以忽略c#和xpath的情况?

c# xpath xsd xml-validation

7
推荐指数
1
解决办法
5631
查看次数

如何使用Ant(或Maven)动态创建jaxb.in​​dex文件

这更多的是知识共享而不是提问.认为这个小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)

ant jaxb2 maven

6
推荐指数
1
解决办法
4550
查看次数

如何修改JAXB编组输出流以包含任意内联XML?

我想修改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编组输出.

我还应该提到,由此产生的输出的消费者能够以适合他们的方式解析任意内容.这里的目的是简化服务器端的处理.

提前感谢您提供的任何帮助.

java xml jaxb marshalling

5
推荐指数
2
解决办法
6347
查看次数

如何修复:Liquid 异常:标记 '{%' 没有用正则表达式正确终止:/\%\}/?

我从我的 Jekyll 网站生成器得到这个输出

Liquid 异常:标记 '{%' 没有用正则表达式正确终止:/\%}/

这是怎么回事?

ruby liquid jekyll

5
推荐指数
1
解决办法
6356
查看次数

如何清除散布在GitHub存储库中许多分支和提交中的Java工件?

回顾过去,我不小心将大量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)

git github

4
推荐指数
1
解决办法
219
查看次数

如何实施严格的Maven依赖策略(依赖链攻击)

我想强制执行严格的Maven依赖策略,该策略超出了基本checksumPolicy=fail方法.

这是尝试提供针对修改的版本依赖性的保护,该依赖性仍然具有有效的摘要值,也称为"依赖性链攻击".

这种情况可能来自以下情况:

  • 依赖项已更新,但作者尚未更新版本号并设法覆盖早期版本(或其回购帐户已被泄露)
  • 中间人攻击到位(使用动态重写/散列)
  • 存储库本身已被泄露

在与其他开发人员的讨论中,一种解决上述问题的方法是在pom.xml中列出已知的MD5/SHA摘要,并让Maven验证下载的依赖项具有相同的摘要.这确保了只要源代码存储库保持安全,就会检测到已被破坏的任何包含的依赖项.

因此我的问题是双重的:

  1. 有没有其他方法可以更有效地工作?
  2. 是否有任何现有的实现/插件来完成这项工作?

security maven

4
推荐指数
1
解决办法
1895
查看次数

标签 统计

java ×2

jaxb ×2

maven ×2

xml ×2

ant ×1

c# ×1

git ×1

github ×1

jaxb2 ×1

jekyll ×1

liquid ×1

marshalling ×1

ruby ×1

security ×1

spring ×1

xml-validation ×1

xpath ×1

xsd ×1