日期:2014-05-18  浏览次数:20675 次

90分求解决sax解析数据时元素中值只得到一部分,在线等!有答案马上结帖
如元素 <aaa> 5264266SERFWFD </aaa>
有时候会解析时aaa元素的值只会得到一部分(如得到‘4266SERFWFD’)前三位没得到,也可能得到中间的某一部分。谁有解决办法?谢谢

在网上找这样一段话,但没说怎么解决:
SAX解析XML

使用SAX解析XML需要注意的地方:
一个Element的内容有可能被分割成多个部分(即多次调用characters()函数)。
比如:
<name> xxxxxxcccccccccccccoooooooooo </name>
当元素name被解析之后,xxxxxxcccccccccccccoooooooooo可能被拆分成几段分别调用characters()函数,而不是全部一次性传递给characters()函数。

------解决方案--------------------
那你就多调用几次characters函数呗 然后将结果拼起来
------解决方案--------------------
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

String url= "文件路径 ";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//指定经过验证的解析器。dbf.setValidating(true);
// 需要加载 DTD。//获取工厂中 DocumentBuilder 的实例。

DocumentBuilder db = dbf.newDocumentBuilder();
//解析文档。

Document doc = db.parse(url);
NodeList e=doc.getElementsByTagName( "person ");
if(e!=null)
{
for(int i=0;i <e.getLength();i++)
{
Node book=e.item(i);
if(book.getNodeType()==Node.ELEMENT_NODE)
{
NodeList mname=doc.getElementsByTagName( "name ");
Node mainName=mname.item(i);
System.out.println( "名字= "+mainName.getFirstChild().getNodeValue());


NodeList msex=doc.getElementsByTagName( "sex ");
Node mainsex=msex.item(i);
System.out.println( "性别= "+mainsex.getFirstChild().getNodeValue());

NodeList mage=doc.getElementsByTagName( "age ");
Node mainage=mage.item(i);
System.out.println( "性别= "+mainage.getFirstChild().getNodeValue());
}
}
}


一下是xml文件的内容:
<?xml version= "1.0 " encoding= "gb2312 "?>
<family>
<person>
<name> meimei </name>
<sex> female </sex>
<age> 20 </age>
</person>
<person>
<name> meinv </name>
<sex> female </sex>
<age> 22 </age>
</person>
</family>
------解决方案--------------------
你的characters方法是怎么写的,贴出来看看
------解决方案--------------------
楼主问题解决了吗?把characters方法贴出来看看呗,