如何通过仅更改一个字段来创建多个xml请求?

时间:2014-01-03 05:45:10

标签: java xml

我需要帮助才能找到如何多次创建xml的方法,而我每次只更改两个字段,其余字段与现在相同。请告诉我在java中这样做的方法? 这是下面的示例xml: 我会更改<Id><Originator>

的值
<TransactionBlk>
  <Id>NIK</Id> 
  <CorrelationId /> 
  <Originator>NIK</Originator> 
  <Service>GetIns</Service> 
  <VersionNbr>1</VersionNbr> 
  <VersionNbrMin>0</VersionNbrMin> 
  <MsgNm>Req</MsgNm> 
  <MsgFormatCd>XML</MsgFormatCd> 
</TransactionBlk>

3 个答案:

答案 0 :(得分:1)

你可以创建一个类包含所有这个参数作为类变量,创建getter和setter方法。使用setter方法创建类设置值的对象。

您可以使用JAXB API's类将您的java对象转换为XML格式。

The JAXBContext class provides the client's entry point to the JAXB API.  
It provides an abstraction for managing the XML/Java binding information   
necessary to implement the JAXB binding framework operations: unmarshal,  
marshal and validate.  

这是Doc reference,用于将Java对象转换为XML。

以下是相同Tutorial Link

的教程

示例代码:

@XmlRootElement(name="TransactionBlk_REQ",namespace="http://TransactionBlk.com")
@XmlAccessorType(XmlAccessType.FIELD)  
public class TransactionBlk  
{ 
   @XmlElement(name = "Id")
   private String id;  

   @XmlElement(name = "Originator")
   private String Originator;   

   //Your getter and setter method.
}

TransactionBlk bean = new TransactionBlk();
//Set your parameter value here

StringWriter responseWriter = new StringWriter();  
JAXBContext jaxbContext = JAXBContext.newInstance(TransactionBlk.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();  
jaxbMarshaller.marshal(bean, responseWriter);
String xmlStr = responseWriter!=null?responseWriter.toString():null;

答案 1 :(得分:0)

您可以使用XSLT转换XML

答案 2 :(得分:0)

如果您所做的只是打印一个“样板”文档,其中包含这两个值的变化,a,您可以使用DPH(Desperate Perl Hacker)方法:只需将其组装为文本,暂停打印值即可。适当的地方。为安全起见,您应该预先扫描这些值,以确保它们不包含&lt;,&gt;或&amp;如果你找到它们,就逃避它们。

对于更复杂的东西,或者如果你想开始学习如何“正确”地做到这一点,请查看标准的XML API for Java:DOM(文档对象模型,文档的内存树模型), SAX(文档的事件流视图)和JAXP(用于获取XML文档并将其解析为DOM或SAX以便您可以读取它,并采用DOM或SAX并将其作为XML语法编写的工具)。 JAXP还提供了用于调用XPath来搜索文档的标准API,以及用于将样式表应用于文档的XSLT,因此它们合在一起涵盖了XML的大部分基本操作。

您可能希望查看一些使用Java来操作XML的教程。我当然有偏见,尤其是因为他们发表了我的一篇文章,但根据我的经验,IBM的DeveloperWorks网站(https://www.ibm.com/developerworks/xml/)获得了有关XML和其他标准的更好的平均材料。