`
dengchangqing
  • 浏览: 52576 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于xml带命名空间的解析问题

    博客分类:
  • XML
阅读更多
关于xml带命名空间的解析问题,前不久公司实现了用 java调用.net webservice接口.由于系统之间传输的是带命名空间xml文件,开始始终解析得不到节点信息,一直纳闷了很久,后来看了一为牛人的blog,终于实现了.
 
public List loadXml(String path)
{

Flights flight;
List list = new ArrayList();
String bunkList = "";
String takeOffCity = "";
String arriveCity = "";
try
{
SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new BufferedInputStream(
                                                    new FileInputStream(
                                                   new File(path))));
    HashMap xmlMap = new HashMap();  
            xmlMap.put("mo","http://www.xxxx.com");  
            XPath x = document.createXPath("//mo:string"); //child node 
            x.setNamespaceURIs(xmlMap);           
            Element valueElement = (Element)x.selectSingleNode(document); 
            String flights = valueElement.getText();
           
            StringTokenizer loop = new StringTokenizer(flights,"^");
           
            while(loop.hasMoreTokens())
            {   
           
            flight = new Flights();
            StringTokenizer deep = new StringTokenizer(loop.nextToken(),","); 
                flight.setTakeOffDate(deep.nextToken());
            flight.setTakeOffTime(deep.nextToken());
            flight.setArriveTime(deep.nextToken());
            flight.setAirCode(deep.nextToken());
            flight.setFlightNum(deep.nextToken());
            bunkList = deep.nextToken();//所有舱位信息
            takeOffCity = deep.nextToken();
            arriveCity = deep.nextToken();
       
            flight.setAirBunkInfoBeans(getBunkInfo(takeOffCity,arriveCity,flight.getAirCode(),bunkList));
            flight.setPlaneModel(deep.nextToken());
            flight.setInsurance(deep.nextToken());
            flight.setMeal(deep.nextToken());
            flight.setElectricTicketFlag(deep.nextToken());
           
            flight.setTotalTime(getTime(flight.getTakeOffTime(),flight.getArriveTime()));
           
            list.add(flight);    
            }
          
}catch(DocumentException es)
         {
       es.printStackTrace();
          }catch(IOException er)
          {
     er.printStackTrace();
          }
          return list;
               }
}
分享到:
评论
2 楼 dengchangqing 2007-11-29  
抱歉!现在忙着系统升级去了,没时间写东西。
  我觉得你说的没错啊,应该是将方法返回的String保存成xml文件,当然首先你要确定那个方法是返回的数据符合xml语法结构,然后在根据你的要求对xml文档进行增、删、改操作。
/** *//**移除节点和属性的操作
     * @throws DocumentException
     */
    public void RemoveOperator() throws DocumentException...{
        //待生成xml的字符串
        String str="<root><book type='science'><Name>Java</Name><price>100</price></book>"
            +"<book type='society'><Name>Society security</Name><price>130</price></book>"
            +"<author><name>chb</name><sex>boy</sex></author></root>";
        //生成一个Document
        Document document = DocumentHelper.parseText(str);
       
        Element root=document.getRootElement();
        //删除类型为society的book节点
        Element book_society=(Element)document.selectSingleNode("//book[@type='society']");
        root.remove(book_society);
        System.out.println("1。正确的删除了类型为society的book节点");
        System.out.println(document.asXML());
       
        //删除sex节点
        Element sex=(Element)root.selectSingleNode("//sex");
       
        //从root节点删除
        root.remove(sex);
        System.out.println("2。这样是不能删除sex节点的");
        System.out.println(document.asXML());
       
        //从author节点删除
        root.element("author").remove(sex);
        System.out.println("3。这样就可以正确删除sex节点");
        System.out.println(document.asXML());
       
        //删除属性
        Attribute type=root.element("book").attribute("type");
        root.element("book").remove(type);
        System.out.println("4。正确删除book节点的type属性");
        System.out.println(document.asXML());
    }
1 楼 phoenix 2007-11-23  
想请问一下如何用java调用.net传递过来的xml。其它像int,double等类型都知道怎么处理,就是不知道怎么将invoke返回的数据格式化为xml,是不是就当做是返回一个string,然后把这个string封装成xml来解析这样啊,希望提供帮助,最好附代码,谢谢了!

相关推荐

Global site tag (gtag.js) - Google Analytics