XML到XML转换

问题描述:

我有一个要求,我有一个输入XML和一个XSD。我需要从输入xml格式转换为另一种基于XSD的xml格式。请帮助我,我该如何做到这一点。我是新的XML转换。XML到XML转换

+0

什么技术堆栈您使用的? – 2012-01-18 08:15:12

+1

这是一个过于笼统,没有明确定义的问题。只是一个输入和输出模式没有定义一个单一的转换 - 从第一个到第二个转换可能会有无限数量的转换。缺少的是转换的语义 - 要遵守/实施的规则/要求是什么。例如'Person/Name'可以进入'Seller/Name'或者'Buyer/Name'。在这两种情况下,我们都会得到想要的格式,但意义上的差异至关重要。 – 2012-01-18 14:09:03

+1

您需要了解XSLT。不要指望人们为你写一个XSLT教程来回答你的问题。已经有相当一部分人了。根据我的经验,学习一门新语言的最好方法是先找到一本好书,然后从封面阅读。 XSLT的一个优点是,您可以在任何使用的技术堆栈上使用它。但是,您需要尽早决定是使用XSLT 1.0还是2.0 --XSLT 2.0功能强大得多,但却没有广泛使用。 – 2012-01-18 09:47:10

对于XML到XML的转换,您可以使用XSLT。见样本here。如果您使用的是Java,使用javax.xml.validation.Schema为XSD验证

// parse an XML document into a DOM tree 
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document document = parser.parse(new File("instance.xml")); 

// create a SchemaFactory capable of understanding WXS schemas 
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 

// load a WXS schema, represented by a Schema instance 
Source schemaFile = new StreamSource(new File("mySchema.xsd")); 
Schema schema = factory.newSchema(schemaFile); 

// create a Validator instance, which can be used to validate an instance document 
Validator validator = schema.newValidator(); 

// validate the DOM tree 
try { 
    validator.validate(new DOMSource(document)); 
} catch (SAXException e) { 
    // instance document is invalid! 
} 

样品here

对于改造,使用的TransformerFactory如果你使用XSLT或者你可以通过Marshaller class

使用XSLT从XML转换通过JAXB到POJO和马歇尔一样,以XML也是一个代码..你需要定义你想要输出的样子..
它很棒,你有预定义的XSD,所以你知道在转换后应该是什么样的结果XML。所以设计XSL代码相应..

和XSD不会改变飘飞。(对于任何实际系统)..