使用JAXB解析XML文件时遇到一种非常奇怪的行为。 Google之前不会找到其他任何人遇到此问题。
在我的XSD文件中,我得到了以下限制模式:
<xsd:restriction base="xoev-lc:String.Latin">
<xsd:whiteSpace value="preserve"/>
<xsd:pattern value="([^\n\r\t])*"/>
</xsd:restriction>
在我的测试XML文件中,我收到了街道“My Street”的邮政地址,我得到了这样的解析错误:
[org.xml.sax.SAXParseException; lineNumber:23; columnNumber:53; cvc-pattern-valid:Wert“My Street”ist nicht Facet-gültig在Bezug auf Muster“([^ \ n \ r])*”fürTyp“AdressBestandteilType”。]
表示该值在模式上不是facet-valid。 请注意,模式中的\ t已被空格替换!如果我将街道更改为没有空格的“MyStreet”,则我的XML文件有效。
为什么JAXB用空格替换选项卡?任何提示如何解决这个问题而不改变XSD?