我需要帮助才能找到如何多次创建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>
答案 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和其他标准的更好的平均材料。