`
dengchangqing
  • 浏览: 53309 次
  • 性别: 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来解析这样啊,希望提供帮助,最好附代码,谢谢了!

相关推荐

    XML的命名空间

    XML的命名空间

    WebApi返回xml格式时去除命名空间

    XML命名空间是为了避免元素名称冲突而引入的概念,它为XML文档中的元素提供了唯一的标识。然而,在某些场景下,例如与JavaScript或简单的数据解析应用集成时,我们可能希望去掉这些命名空间以简化处理。 要实现这个...

    dom4j 读取带有命名空间的xml文件

    在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...

    WebApi去除XML命名空间

    首先,我们需要了解XML命名空间的作用。XML命名空间是一种用于解决XML文档中元素和属性名称冲突的方法。它们通过使用URI(统一资源标识符)作为唯一标识,为元素和属性提供上下文。然而,在某些情况下,我们可能希望...

    python xml命名空间

    本文将详细介绍Python中如何处理XML命名空间,包括理解命名空间的基本概念、如何定义和使用命名空间前缀以及如何在Python代码中操作带有命名空间的XML文档。 #### 一、命名空间简介 命名空间是XML文档中用来区分...

    WCF 返回XML去除默认命名空间实例Demo

    **去除默认命名空间** 的主要目的是减少XML的复杂性,使解析和处理更简单。这通常通过自定义XML序列化或者设置WCF绑定配置来实现。在本示例Demo中,开发者可能已经提供了具体的解决方案。 **MyWcfService.sln** ...

    带命名空间的XML增删改查操作实例

    首先,理解XML命名空间的基本概念。命名空间通过一个URI(Uniform Resource Identifier)来唯一标识,通常以`xmlns:`前缀定义。例如,`xmlns:ns="http://example.com/ns"`声明了一个名为`ns`的命名空间,指向`...

    jquery解析带名称空间的xml

    jquery.xmlns-1.7.0.js 是根据jquery.xmlns.js改写的适用于各种版本的jquery解析带命名空间的XML数据,里面附有实例代码,如果使用中有遇到问题,可以反馈,我会进一步改进。

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    易语言 xml解析 易语言 xml解析 教程 带源码

    1. **XML基础**:首先,我们需要了解XML的基本结构和语法规则,如元素(Element)、属性(Attribute)、文本内容(Text Content)、注释(Comment)以及命名空间(Namespace)。XML文档由一系列嵌套的元素构成,每个...

    XML 命名空间(XML Namespaces).pdf

    XML命名空间的引入正是为了解决这种命名冲突问题。它通过给元素和属性名称附加命名空间的方式,区分不同来源的同名元素,从而能够在一个XML文档中混合使用多个不同的XML文档片段。 命名空间的基本语法是在XML元素的...

    xml内容解析,包含命名空间时需特殊处理(dom4j)

    在IT行业中,XML(eXtensible Markup Language)是一种用于标记...通过分析和运行这个文件,你可以更好地理解和实践DOM4J处理XML命名空间的方法。对于开发人员来说,理解和掌握这些知识对于处理复杂的XML数据至关重要。

    winform 使用XML命名空间源码

    在WinForm应用中,我们可以利用XML命名空间来处理XML文件,实现数据的读取、写入和解析。本资源包含的源码展示了如何在WinForm程序中有效地使用XML命名空间。 XML命名空间用于避免XML元素名称的冲突,它通过URI...

    Python利用命名空间解析XML文档

    本文将详细介绍如何在Python中利用命名空间解析XML文档。 首先,让我们理解XML命名空间的基本概念。XML命名空间通常以URI(Uniform Resource Identifier)的形式表示,它为XML元素提供了一种唯一标识的方式。在XML...

    Axis2 SOAP XML报文节点首字母小写转大写,节点命名空间前缀添加与剔除(JAVA)

    在处理SOAP XML报文时,我们可能遇到一些规范性问题,例如节点首字母大小写的转换,以及节点命名空间前缀的添加与剔除。本文将深入探讨这些问题,并提供相应的解决方案。 首先,关于SOAP XML报文中的节点首字母大小...

    简单了解XML中的命名空间

    XML命名空间是一个用于区分具有相同名称的元素和属性的作用域概念,它通过使用URI(统一资源标识符)来唯一地标识这些名称。命名空间的使用,使得在同一个XML文档中可以包含来自不同源的数据,而不会出现名称冲突的...

    xml.rar_XML c语言_c语言 xml_resolver_xml解析 c_解析xml

    开发者可以通过这个文件测试解析器是否能正确解析XML文档的元素、属性、文本内容以及处理命名空间、实体引用等特性。 解析XML的过程中,需要注意以下几个关键点: 1. **语法验证**:确保XML文档符合W3C标准,包括...

    xml 解析 xml 解析几何

    解析此文件时,需要遵循XML语法规则,如正确闭合标签,使用命名空间等。 在实际应用中,我们还可能遇到其他XML相关的概念,如DTD(Document Type Definition)或XML Schema,它们用于定义XML文档的结构和约束。此外...

    Tinyxml文件解析经典例子

    Tinyxml 文件解析经典例子 TinyXML 是一个开源的解析 XML 的解析库,能够用于 C++,能够在 Windows 或 Linux 中编译。这个解析库的模型通过解析 XML 文件,然后在内存中生成 DOM 模型,从而让我们很方便的遍历这棵...

Global site tag (gtag.js) - Google Analytics