今天加载xml文件的,并添加到Docuemnt里面去的时候发现一个问题。出现”Start of root element expected“的问题。开始以为是xml头文件的问题。但是把xml文件内的内容去掉后还是报出这个错误!然后我自己重新创建了一个xml文件。重新创建的xml文件有能正确的把xml放在Document里面去。
后来仔细对比两个文件,终于知道原因了。原来是编码的问题。这个错误让我很无语啊。找了我一上午。一个是UTF-8格式,一个是UTF-8无DOM的格式。
DocumentBuilder加载xml的时候,默认格式是UTF-8格式。但是,我的文件是UTF-8格式的还错误了。竟然用UTF-8无DOM格式正确了。百思不得其解。后来查了一下UTF-8和UTF-8无DOM的区别。
BOM——Byte Order Mark,就是字节序标记
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
UTF-
8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开
头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可
是,还是有很多软件不能识别BOM。
还是不太懂。麻烦知道的人赐教。谢谢。
<?xml version="1.0" encoding="UTF-8"?>
<page>
<!-- hotelSearch request -->
<searchConditions>
<cityCode>PAR</cityCode>
<checkInDate>20121103</checkInDate>
<checkOutDate>20121104</checkOutDate>
<hotelName>戴斯</hotelName>
<rankCode>5</rankCode>
<roomCount>4</roomCount>
</searchConditions>
<!-- hotelSearch response -->
<hotelInfos>
<hotelTitle>
<lowestPrice>lowestPrice</lowestPrice>
</hotelTitle>
<hotelInfo>
<ID>886841</ID>
<name>广州戴斯酒店</name>
<englishName>Guangzhou dace hotel</englishName>
<rankCode>3</rankCode>
<positionCode>No.1 Tuhua Road Huazhou Street</positionCode>
<lowestPrice>400.9</lowestPrice>
<rooms>
<room>
<roomId>435453671</roomId>
<roomName>SINGLE</roomName>
<roomType>ROOM</roomType>
<bedType>1 double bed</bedType>
<amount>
<currencyCode>AUD</currencyCode>
<ratePlanCode>123</ratePlanCode>
<ratePlanType>M</ratePlanType>
<rateAccessCode>648097791</rateAccessCode>
<amountBeforeTax>38.18</amountBeforeTax>
<tax>4.58</tax>
<commisionRate>1.14</commisionRate>
<amountAfterTax>43.9</amountAfterTax>
</amount>
<describe>Single Room - 1 double bed</describe>
</room>
</rooms>
<introduction>Surrounded by Guangzhou University City, Yingzhou Ecological Park,International Biological Island, Pazhou International Exhibition Center, Sanflowery Hotel is an ideal place for business and leisure,with the comfortable environment about 30000 square meters.</introduction>
<imageURL/>
<address>No.1 Tuhua Road Huazhou Street</address>
<establishs>
<establish>
<element>Meeting/Banquet facilities</element>
<element>Internet access</element>
<element>Business centre</element>
<element>Conference facilities</element>
<element>High speed internet</element>
<element>Restaurant</element>
<element>Concierge</element>
<element>Room service</element>
</establish>
</establishs>
</hotelInfo>
</hotelInfos>
</page>
package com.csair.util.test;
import java.io.*;
import java.nio.charset.Charset;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class ReadFileUtil {
public static String getStrFromFile(String filePath){
StringBuffer buf=null;//the intermediary, mutable buffer
BufferedReader breader = null;//reader for the template files
try
{
breader = new BufferedReader(new InputStreamReader(new FileInputStream((filePath)),Charset.forName("utf-8")));
buf = new StringBuffer();
while(breader.ready())
buf.append((char)breader.read());
breader.close();
}//try
catch(Exception e)
{
e.printStackTrace();
}//catch
return buf.toString();
}
public static void main(String[] args){
//System.out.print(getStrFromFile("C://Users/Administrator/Desktop/hotelSearch.xml"));
DocumentBuilder domBuilder;
try {
domBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
String arr= ReadFileUtil.getStrFromFile("C://Users/Administrator/Desktop/hotelSearch.xml");
Document doc=domBuilder.parse(new InputSource(new StringReader(arr.toString())));
System.out.println(doc.toString());
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FactoryConfigurationError e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
通过对这本书的学习,读者不仅可以理解XML的基本概念,还能掌握如何在实际工作中有效地使用XML,解决各种与数据交换和存储相关的问题。无论你是开发者、数据管理员还是内容创作者,理解和掌握XML都是提升工作效率的...
在遇到“Android XML问题”时,我们通常会涉及到以下几个关键知识点: 1. **XML布局文件**:Android中的XML布局文件是用于描述用户界面元素的,如按钮、文本视图、图像等。开发者在`res/layout`目录下创建XML文件,...
XML,全称Extensible Markup Language,可扩展标记语言,是一种用于描述数据的标记语言,它在IT领域扮演着至关重要的角色。...通过阅读这本书,你将对XML有一个全面而深入的理解,能够熟练运用XML解决实际问题。
XML(eXtensible Markup Language)是用于存储和传输数据的一种标记语言,广泛应用于Web服务、配置文件和数据交换等领域。...在处理XML问题时,熟悉这些基本概念和API可以帮助快速定位和解决问题,提高开发效率。
本教程将深入探讨如何在iOS应用中轻松解决XML解析问题。 首先,我们要了解iOS中两种主要的XML解析库:NSXMLParser和XMLParser。NSXMLParser是苹果提供的基于事件驱动的解析器,适合处理小到中等规模的XML文档。它...
本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...
《XML Programming Bible》是一本详尽的指南,旨在帮助读者深入了解和掌握XML(可扩展标记语言)编程。这本书共987页,包含了XML...无论你是想要提升个人技能,还是解决实际项目中的XML问题,这本书都将是宝贵的资源。
XML(eXtensible Markup Language)是一种用于标记...XMLSpy作为一款强大的工具,提供了全面的XML处理功能,是开发者处理XML问题的得力助手。通过阅读Readme-说明.htm,用户可以了解如何充分利用这款工具的所有特性。
本资料中包含yum源本地配置,其中又centos7的yum安装包,已经配置离线yum源repomod的rmp包,其中base文件中的rpm包为docker离线配置,本资料离线配置yum以docker-yum为例
3. XML标签大小写问题: XML是大小写敏感的,这意味着“element”和“Element”被视为不同的元素。在定义XML Schema时,应该明确指定元素和属性的名称,以保持一致性。在转换为JavaBean时,确保JavaBean的属性名与...
根据给定文件的信息,我们可以提炼出关于XML(可扩展标记语言)的重要知识点,以及与之相关的书籍《XML问题设计解决方案》的关键信息。 ### XML:可扩展标记语言 **定义与功能**: XML,全称为Extensible Markup ...
本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...
2. **错误处理**:相比于TinyXML,TinyXML2提供了更好的错误报告机制,可以帮助开发者更容易地定位和解决问题。 3. **性能提升**:优化了内存管理和解析速度,使得处理大型XML文件更加高效。 4. **API简化**:某些...
在PowerBuilder(简称PB)这个强大的开发环境中,处理XML文件是一项常见的任务...希望这个例子能对你的PB开发工作有所帮助,如果你遇到任何问题,可以进一步探索PowerBuilder的官方文档或社区资源来获取更多解决方案。
6. **错误处理**:在解析过程中,可能会遇到语法错误、文件读取错误等问题,因此,编写程序时需要包含适当的错误处理机制,如异常捕获和处理,以确保程序的健壮性。 7. **实际应用**:了解了基本的XML解析方法后,...
- Peter Flynn的XML FAQ、Lisa Rein’s finetuning XML FAQs、Dave Pawson’s XSL FAQ、jGuru’s XML FAQ以及Ronald Bourret’s XML Namespaces FAQ都是处理XML问题的宝贵资源,涵盖了XSLT、XPath、命名空间等各个...
4. **错误处理**:TinyXML2提供了一个简单的错误处理机制,当解析或操作XML时遇到问题,会返回一个错误代码,通过`ErrorId()`和`ErrorStr()`可以获取详细的错误信息。 5. **内存管理**:TinyXML2使用智能指针来管理...
本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...
本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...
xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml 查询问题 急xml ...