用Java转换XML文件
我想借助java代码将一个xml转换成另一个xml。我想将一个xml作为输入文件,并期望另一个xml文件作为输出。我们如何在java的帮助下做这件事?谁能给我提个建议吗
输入。xml
<Order OrderNo=”1234567890”>
<OrderLines>
<OrderLine PrimeLineNo=”1” SubLineNo=”1”/>
<OrderLine PrimeLineNo=”2” SubLineNo=”1”/>
</OrderLines>
</Order>
输出。xml文件我需要像这样输出此文件
<Order OrderName="1234567890">
<OrderLines MaxOrderNumbers=”2”>
<OrderLine LineNumber="1" SubLineNumber="1"/>
<OrderLine LineNumber ="2" SubLineNumber ="1"/>
</OrderLines>
</Order>
但是我已经在java的帮助下尝试了下面的代码
public class XmlToXml {
public static void main(String[] args) {
final String xmlStr ="<Order OrderNo=\"1234567890\"><OrderLines><OrderLine PrimeLineNo=\"1\" SubLineNo=\"1\"/><OrderLine PrimeLineNo=\"2\" SubLineNo=\"1\"/></OrderLines></Order>";
Document doc = convertStringToDocument(xmlStr);
String str = convertDocumentToString(doc);
System.out.println(str);
}
private static String convertDocumentToString(Document doc) {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer;
try {
transformer = tf.newTransformer();
System.out.println(transformer.getParameter("xmlStr"));
StringWriter writer = new StringWriter();
writer.append("MaxOrderNumbers");
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString();
return output;
} catch (TransformerException e) {
e.printStackTrace();
}
return null;
}
private static Document convertStringToDocument(String xmlStr) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource( new StringReader( xmlStr ) ) );
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
# 1 楼答案
如果您所做的只是更改标记和属性的文本,而不是XML文件本身的结构,那么您可以简单地将其作为文本文件读入,并使用Regex将一个字符串的所有实例与另一个字符串交换。以下代码应该可以帮助您开始:
# 2 楼答案
解决这个问题的方法是在XSLT中定义转换规则
默认情况下,您需要一条复制内容不变的规则:
然后需要进一步的规则来定义要进行的更改:
同样,对于其他重命名规则
然后,将这些规则组装到样式表中后,您可以从Java代码运行转换,使用与您已经完成的非常类似的代码: