質問:xml文書を読み取る際に</>を読み取れる様にしたい
(※</〇〇〇>ではなく、</>です)
事象:XMLStreamExceptionでexpected an element name
使用言語:Java
環境:Axis2,SOAP,tomcat,jdk1.8,spring,Eclipse
現在、ドキュメントリテラル型の通信を実装しております
基本的に下記の様にどんどんXMLのデータタグと比較してreader.next()で読み進めていく感じです。
if(reader.isStartElement()
&& new QName("http://〇〇〇〇〇","Test4").getLocalPart()
.equals(reader.getName().toString()))
しかし、恐らくisEndElement自体が</>を受け付けていない様に思われます。
打開策が思い浮かばず…
------【追記】------
どうやら </ までは認識していて、
その次に > がくるとexceptionをはいている様です。
つまり、要素無しだからですね。
実現したい事は、
終了タグ</>で通信する事です
以下、使用リソース
xml
1<SampleData> 2 <DataOpe> 3 <Test1>TestRequest</> 4 <Test2> 5 <Test3>TestBody1</> 6 <Test4>TestBody2</> 7 </Test2> 8 </DataOpe> 9</SampleData>
抜粋してもかなりコードが多くなってしまうので結構割愛しております
Java
1 2public static Test2 pase(XMLStreanReader reader){ 3 4Test2 obj = new Test2(); 5QName qname = null; 6String prefix = ""; 7String namspaceuri = ""; 8 9while(!reader.isStartElement() && !reader.isEndElement()) reader.net(); 10qname = reader.getName(); 11 12if(reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type") != null){ 13 String fullTypeName = 14 reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", "type") ; 15 if(fullTypeName != null){ 16 String nsPrefix = null; 17 if(fullTypeName.indexOf(":") > -1){ 18 nsPrefix = fullTypeName.substring(0, fullTypeName.indexOf(":")); 19 } 20 nsPrefix = nsPrefix == null ? "" : nsPrefix ; 21 String type = fullTypeName.substring(fullTypeName.indexOf(":")+1) 22 if(!"Test2".equals(Type)){ 23 …割愛 24 } 25 reader.next(); 26 while(!reader.isStartElement() && !reader.isEndElement()) reader.net(); 27 28 if(reader.isStartElement() 29 && new QName("http://〇〇〇〇〇","Test4").getLocalPart() 30 .equals(reader.getName().toString())){ 31 …割愛 32 reader.next(); 33 } 34 while(!reader.isStartElement() && !reader.isEndElement()) reader.net(); 35 36 if(reader.isStartElement() 37 && new QName("http://〇〇〇〇〇","Test3").getLocalPart() 38 .equals(reader.getName().toString())){ 39 40 …割愛 41 reader.next(); 42 } 43 while(!reader.isStartElement() && !reader.isEndElement()) reader.net(); 44 } 45} 46} 47

回答1件
あなたの回答
tips
プレビュー