如元素<aaa>5264266SERFWFD</aaa>
有时候会解析时aaa元素的值只会得到一部分(如得到‘4266SERFWFD’)前三位没得到,也可能得到中间的某一部分。谁有解决办法?谢谢在网上找这样一段话,但没说怎么解决:
SAX解析XML使用SAX解析XML需要注意的地方:
一个Element的内容有可能被分割成多个部分(即多次调用characters()函数)。
比如:
<name>xxxxxxcccccccccccccoooooooooo</name>
当元素name被解析之后,xxxxxxcccccccccccccoooooooooo可能被拆分成几段分别调用characters()函数,而不是全部一次性传递给characters()函数。
有时候会解析时aaa元素的值只会得到一部分(如得到‘4266SERFWFD’)前三位没得到,也可能得到中间的某一部分。谁有解决办法?谢谢在网上找这样一段话,但没说怎么解决:
SAX解析XML使用SAX解析XML需要注意的地方:
一个Element的内容有可能被分割成多个部分(即多次调用characters()函数)。
比如:
<name>xxxxxxcccccccccccccoooooooooo</name>
当元素name被解析之后,xxxxxxcccccccccccccoooooooooo可能被拆分成几段分别调用characters()函数,而不是全部一次性传递给characters()函数。
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>