对xsd文件的操作 生成java实体并解析生成的xml

步骤如下:
1. 根据xsd生成相应的java类:
执行如下命令即可生成java类,x jc –d  java 类的存放路径  –p  类的包名  xsd文件名

例如:D:\java\jdk1.6.0_31\bin>xjc -d e:\ -p org.nssd e:\journal.xsd

2. 根据xsd可以生成测试xml数据,用eclipse等工具可以生成测试数据,右键xsd文件Generate→xml files

3. 解析xml文件,代码如下:
[java]  view plain copy print ?
  1. import java.io.File;  
  2. import javax.xml.XMLConstants;  
  3. import javax.xml.bind.JAXBContext;  
  4. import javax.xml.bind.JAXBElement;  
  5. import javax.xml.bind.Unmarshaller;  
  6. import javax.xml.transform.stream.StreamSource;  
  7. import javax.xml.validation.SchemaFactory;  
  8. import org.nssd.JElem;  
  9.   
  10. public class Test {  
  11.     public static void main(String[] args) {  
  12.         JAXBContext context;  
  13.         try {  
  14.             context = JAXBContext.newInstance(JElem.class);  
  15.   
  16.             Unmarshaller shaller = context.createUnmarshaller();  
  17.   
  18.             shaller.setSchema(SchemaFactory.newInstance(    
  19.                     XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(    
  20.                     new File("src/myxsd.xsd")));  
  21.               
  22.             JAXBElement<JElem> root = shaller.unmarshal(new StreamSource(new File("src/data.xml")),JElem.class);  
  23.             JElem jElem = root.getValue();  
  24.         } catch (Exception e) {  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28. }  
JElem是xml文件的根节点
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSD专程XML,非常实用。class CSaxContentHandler : public ISAXContentHandler { public: CSaxContentHandler(); virtual ~CSaxContentHandler(); virtual long __stdcall QueryInterface(const struct _GUID &, void **); virtual unsigned long __stdcall AddRef(void); virtual unsigned long __stdcall Release(void); virtual HRESULT STDMETHODCALLTYPE putDocumentLocator( /* [in] */ ISAXLocator __RPC_FAR *pLocator); virtual HRESULT STDMETHODCALLTYPE startDocument(void); virtual HRESULT STDMETHODCALLTYPE endDocument(void); virtual HRESULT STDMETHODCALLTYPE startPrefixMapping( /* [in] */ wchar_t __RPC_FAR *pwchPrefix, /* [in] */ int cchPrefix, /* [in] */ wchar_t __RPC_FAR *pwchUri, /* [in] */ int cchUri); virtual HRESULT STDMETHODCALLTYPE endPrefixMapping( /* [in] */ wchar_t __RPC_FAR *pwchPrefix, /* [in] */ int cchPrefix); virtual HRESULT STDMETHODCALLTYPE startElement( /* [in] */ wchar_t __RPC_FAR *pwchNamespaceUri, /* [in] */ int cchNamespaceUri, /* [in] */ wchar_t __RPC_FAR *pwchLocalName, /* [in] */ int cchLocalName, /* [in] */ wchar_t __RPC_FAR *pwchRawName, /* [in] */ int cchRawName, /* [in] */ ISAXAttributes __RPC_FAR *pAttributes); virtual HRESULT STDMETHODCALLTYPE endElement( /* [in] */ wchar_t __RPC_FAR *pwchNamespaceUri, /* [in] */ int cchNamespaceUri, /* [in] */ wchar_t __RPC_FAR *pwchLocalName, /* [in] */ int cchLocalName, /* [in] */ wchar_t __RPC_FAR *pwchRawName, /* [in] */ int cchRawName); virtual HRESULT STDMETHODCALLTYPE characters( /* [in] */ wchar_t __RPC_FAR *pwchChars, /* [in] */ int cchChars); virtual HRESULT STDMETHODCALLTYPE ignorableWhitespace( /* [in] */ wchar_t __RPC_FAR *pwchChars, /* [in] */ int cchChars); virtual HRESU
可以使用Java中的JAXB(Java Architecture for XML Binding)库来根据XSD文件生成XML。JAXB是Java EE的一部分,可以将Java对象映射到XML文档,并提供了在Java对象和XML文档之间进行转换的方法。 以下是使用JAXB生成XML的基本步骤: 1. 创建一个Java,该的属性对应于XSD文件中的元素和型。 2. 使用JAXB的XJC工具从XSD文件生成Java。这可以通过在命令行中使用xjc命令或在Eclipse中使用插件来完成。 3. 在Java代码中创建JAXBContext对象,该对象负责将Java对象转换为XML文档。 4. 创建Java对象,并设置其属性。 5. 使用JAXB Marshaller将Java对象转换为XML文档。 以下是一个简单的示例代码: ```java import javax.xml.bind.*; import java.io.*; public class GenerateXML { public static void main(String[] args) throws JAXBException, IOException { // 创建JAXBContext对象 JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); // 创建Marshaller对象 Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 创建Java对象 Person person = new Person(); person.setName("John Doe"); person.setAge(30); // 将Java对象转换为XML文档 StringWriter writer = new StringWriter(); marshaller.marshal(person, writer); String xml = writer.toString(); System.out.println(xml); } } @XmlRootElement class Person { private String name; private int age; // getters and setters } ``` 在上面的示例中,我们创建了一个名为Person的Java,并使用@XmlRootElement注解将其标记为根元素。然后,我们使用JAXBContext和Marshaller对象将Java对象转换为XML文档。最后,我们使用StringWriter将XML文档输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值