[英]Java: Best way to generate SQLs after parsing a xml file Using JAXB and insert to database without duplicates?
[英]Best way to get XML signature using JAXB
我正在使用REST和XML進行客戶端和服務器之間的通信。 客戶端為每個xml添加一個封裝簽名,服務器需要驗證其身份驗證。 我正在使用JAXB進行編組和解組。 我需要將簽名元素作為org.w3c.dom.Element來驗證它,我想避免使用直接的DOM操作。 服務器還需要對響應XML進行簽名。
我們來看一些代碼:
REST界面
getXML(Root root)
XML:
<root>
<foo></foo>
<bar></bar>
<Signature Id="Signature-1c7757b0" xlns="http://www.w3.org/2000/09/xmldsig#">
...
</Signature>
<root>
這是我目前的解決方案。
JAXB類
@XmlRootElement
public class Root{
@XmlElement
private Foo foo;
@XmlElement
private Bar bar;
@XmlAnyElement(lax = true)
private List<Element> signature;
}
誰能想到一個更好的解決方案來處理這個? 我沒有在網上找到很多幫助,詳細說明了如何使用DSig庫和JAXB。
我不確定我是否理解正確,但如果您需要提取簽名,則可以使用stax。 我這樣做的是春季批量工作。
我有以下豆類:
@Bean
public StaxEventItemReader<Catalog.Products.Product> nexwayCatalogReader() {
return Try.ofFailable(() -> {
final StaxEventItemReader<Catalog.Products.Product> itemReader = new StaxEventItemReader<>();
itemReader.setResource(new UrlResource(nexwaySettings.getEndpoints().getXmlCatalogUrl()));
itemReader.setFragmentRootElementName("product");
itemReader.setUnmarshaller(productMarshaller());
return itemReader;
}).orElseThrow(() -> new RuntimeException("Unable to create resource using nexwayCatalogUrl = ["
+ nexwaySettings.getEndpoints().getXmlCatalogUrl() + "]"));
}
@Bean
public Jaxb2Marshaller productMarshaller() {
final Jaxb2Marshaller productMarshaller = new Jaxb2Marshaller();
productMarshaller.setMappedClass(Catalog.Products.Product.class);
productMarshaller.setClassesToBeBound(Catalog.Products.Product.class);
return productMarshaller;
}
所以讀者只讀取我需要的xml部分(產品)。 Xml元素產品正被映射到類實例。
BTW sax / stax似乎比標准的Unmarshaller更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.