关于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;
}
}
分享到:
相关推荐
XML的命名空间
XML命名空间是为了避免元素名称冲突而引入的概念,它为XML文档中的元素提供了唯一的标识。然而,在某些场景下,例如与JavaScript或简单的数据解析应用集成时,我们可能希望去掉这些命名空间以简化处理。 要实现这个...
在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...
首先,我们需要了解XML命名空间的作用。XML命名空间是一种用于解决XML文档中元素和属性名称冲突的方法。它们通过使用URI(统一资源标识符)作为唯一标识,为元素和属性提供上下文。然而,在某些情况下,我们可能希望...
本文将详细介绍Python中如何处理XML命名空间,包括理解命名空间的基本概念、如何定义和使用命名空间前缀以及如何在Python代码中操作带有命名空间的XML文档。 #### 一、命名空间简介 命名空间是XML文档中用来区分...
**去除默认命名空间** 的主要目的是减少XML的复杂性,使解析和处理更简单。这通常通过自定义XML序列化或者设置WCF绑定配置来实现。在本示例Demo中,开发者可能已经提供了具体的解决方案。 **MyWcfService.sln** ...
首先,理解XML命名空间的基本概念。命名空间通过一个URI(Uniform Resource Identifier)来唯一标识,通常以`xmlns:`前缀定义。例如,`xmlns:ns="http://example.com/ns"`声明了一个名为`ns`的命名空间,指向`...
jquery.xmlns-1.7.0.js 是根据jquery.xmlns.js改写的适用于各种版本的jquery解析带命名空间的XML数据,里面附有实例代码,如果使用中有遇到问题,可以反馈,我会进一步改进。
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
1. **XML基础**:首先,我们需要了解XML的基本结构和语法规则,如元素(Element)、属性(Attribute)、文本内容(Text Content)、注释(Comment)以及命名空间(Namespace)。XML文档由一系列嵌套的元素构成,每个...
XML命名空间的引入正是为了解决这种命名冲突问题。它通过给元素和属性名称附加命名空间的方式,区分不同来源的同名元素,从而能够在一个XML文档中混合使用多个不同的XML文档片段。 命名空间的基本语法是在XML元素的...
在IT行业中,XML(eXtensible Markup Language)是一种用于标记...通过分析和运行这个文件,你可以更好地理解和实践DOM4J处理XML命名空间的方法。对于开发人员来说,理解和掌握这些知识对于处理复杂的XML数据至关重要。
在WinForm应用中,我们可以利用XML命名空间来处理XML文件,实现数据的读取、写入和解析。本资源包含的源码展示了如何在WinForm程序中有效地使用XML命名空间。 XML命名空间用于避免XML元素名称的冲突,它通过URI...
本文将详细介绍如何在Python中利用命名空间解析XML文档。 首先,让我们理解XML命名空间的基本概念。XML命名空间通常以URI(Uniform Resource Identifier)的形式表示,它为XML元素提供了一种唯一标识的方式。在XML...
在处理SOAP XML报文时,我们可能遇到一些规范性问题,例如节点首字母大小写的转换,以及节点命名空间前缀的添加与剔除。本文将深入探讨这些问题,并提供相应的解决方案。 首先,关于SOAP XML报文中的节点首字母大小...
XML命名空间是一个用于区分具有相同名称的元素和属性的作用域概念,它通过使用URI(统一资源标识符)来唯一地标识这些名称。命名空间的使用,使得在同一个XML文档中可以包含来自不同源的数据,而不会出现名称冲突的...
开发者可以通过这个文件测试解析器是否能正确解析XML文档的元素、属性、文本内容以及处理命名空间、实体引用等特性。 解析XML的过程中,需要注意以下几个关键点: 1. **语法验证**:确保XML文档符合W3C标准,包括...
解析此文件时,需要遵循XML语法规则,如正确闭合标签,使用命名空间等。 在实际应用中,我们还可能遇到其他XML相关的概念,如DTD(Document Type Definition)或XML Schema,它们用于定义XML文档的结构和约束。此外...
Tinyxml 文件解析经典例子 TinyXML 是一个开源的解析 XML 的解析库,能够用于 C++,能够在 Windows 或 Linux 中编译。这个解析库的模型通过解析 XML 文件,然后在内存中生成 DOM 模型,从而让我们很方便的遍历这棵...