JAXB读取包含有CDATA的XML文件及相关异常解决
xml不带命名空间:
xml带命名空间
1,xsd可以用xml spy画出来。默认画出来不带命名空间。下面的命名空间是手工加上去的。如下:
2,通过xjc命令,把xsd生成jaxb的java代码。
xjc -p com.test ha.xsd
带命名空间的,则会生成package-info.java.
3,通过下面的测试代码测试:
5,总结:
1),如果xml中带命名空间,则对应的xsd也要带命名空间。
2),xsd带命名空间,则会生成package-info.java。
3),第4点提到的测试异常,可以通过在xjc生成的根类Root.java中,增加注解。如下:
@XmlRootElement(name = "Root")
4),带cdata的xml值,必须通过@XmlValue这个注解获取。而这个注解,xjc是根据下面这段xsd才能生成。如下:<xs:complexType name="Hello"> <xs:simpleContent> <xs:extension base="xs:string"/> </xs:simpleContent> </xs:complexType>