は、私はこのXML持ちながら、接頭辞を無視:アンマーシャリングのXML
<?xml version="1.0" encoding="UTF-8"?>
<s:XXMsg xmlns:s="com:sample:test:msg">
<s:Header>
<s:cpyCod>xxx</s:cpyCod>
<s:appCod>yyy</s:appCod>
</s:Header>
</s:XXMsg>
を、私は、これは次のJavaクラスに非整列化したい:
public class XXHeader
{
private String cpyCod;
private String appCod;
}
私はこのコードを書いた:
をXMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
try
{
XMLStreamReader streamReader = inputFactory
.createXMLStreamReader(Test.class.getClassLoader().getResourceAsStream("xxmsg.xml"));
while (streamReader.hasNext())
{
int next = streamReader.next();
if (streamReader.getEventType() == XMLStreamReader.START_ELEMENT
&& streamReader.getLocalName().equals("Header"))
{
JAXBContext context = JAXBContext.newInstance(XXHeader.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
XXHeader xxHeader = unmarshaller.unmarshal(streamReader, XXHeader.class).getValue();
System.out.println(xxHeader);
break;
}
}
フィールド値はすべてです0としてnull
となります。しかし、私がxmlを変更してすべての要素のプレフィックスs:
を削除すると、正しい値が得られます。
正しい値を取得するために非整列化中にこの接頭辞を無視するにはどうすればよいですか?
PS:@XML**
注釈の使用は、XXHeader
クラスではお勧めできません。
感謝。それは本当に役に立ちました。 –