-
SAX获取节点名与节点值. 1.节点名直接在重写的startElement()方法中通过输出qName便可以. 2.要得到节点值,则需要在类中重写characters()方法 public void characters(char[] ch, int start, int length) SAX中是先通过startDocument->startElement->characters->endElement->endDocument. 中间3个一直循环. 每次遇到标签调用characters方法的时候它的字符数组ch实际上就是我们整个的book xml文档的内容。 start为要读取内容的开始位置放到ch数组,length为长度 <name>冰与火之歌</name> 则开始位置在冰,长度为5. 把ch字符数组转文String类型输出,通过String(byte[] bytes,int offset,int length)的构造方法进行数组的传递. 再去除解析时多余空格,String.trim()作用是去除字符串的前缀和后缀的空格,这里空格和换行也当做一个节点,所以例子中会多了两行空格 String value=String(ch,start,length) if(!value.trim().equals("")){ System.out.println(value); }查看全部
-
SAX方法获取XML的节点属性 1.在继承于DefaultHandler的类中重写startElement()方法 startElement(String uri, String localName, String qName,Attributes attributes) attributes.getVaule();方法参数可以是属性名或者索引值(第几个属性值),来获取属性值,返回字符串. attributes.getQName();方法参数是索引值,获取属性名. 2.已知节点元素下属性的名称,根据属性名获取属性值. 在此方法中qName为属性名,通过attributes.getValue("")方法获取属性值.参数是属性名.返回字符串类型. 3.未知节点元素下属性的名称以及个数时 通过attributes.getLength();方法判断单个开始标签一共有多少个属性名. 通过for循环依次输出属性名和属性值 for(i=0;i<attributes.getLength();i++) { System.out.print("book元素的第"+(i+1)+"个属性名为"+attributes.getQName(i)); System.out.println("属性值是:"+attributes.getValue(i)); }查看全部
-
SAX方式解析xml步骤 1.通过SAXParserFactory的静态newInstance()方法获取一个SAXParserFactory的对象。 2.通过SAXParserFactory对象的newSAXParser()方法返回一个SAXParser类的对象。 3.创建一个类继承DefaultHandler,重写其中的一些方法并创建类的实例. 4.通过SAXParser类的Parse(Stringname,df)方法解析xml文件,参数Stringname为路径名,df为继承于DefaultHandler类的实例化对象,不需要定义变量存储返回的类型. SAX是按节点顺序进行解析,遇到xml的声明即开始解析,遇到最后一个节点的尾节点便结束解析,需要用户自己定义一个类继承于DefaultHandler类来解析,遇到开始标签节点便通过startElement开始解析节点,遇到结束标签节点便通过endElement结束解析,再遇到开始节点继续通过startElement解析,一直循环直到xml文件最后的结束标签节点. 5.在继承于DefaultHandler这个类中需要重写父类的startElement()和endElement()方法,来进行开始节点与结束节点的解析,再重写startDocument()方法与endDocument()方法来标识解析的开始与结束.查看全部
-
JDOM与DOM4J的区分查看全部
-
JDOM与DOM4J的区分查看全部
-
SAX解析的优缺点查看全部
-
DOM解析优缺点分析查看全部
-
java解析xml文件四种方式的区别查看全部
-
注意document对象的导入查看全部
-
Element(元素节点)节点类型英文全称为ELEMENT_NODE 它的nodeName返回值为element name而nodeValue的返回值为null. Attr(属性节点)节点类型英文全称为ATTRIBUTE_NODE 它的nodeName返回值为属性名称,nodeValue返回值为属性值. Text(文本节点)节点类型英文全称为TEXT_NODE 它的nodeName返回值为#text,nodeValue返回值为节点内容.查看全部
-
解析文件节点以及子节点的值 1.先获取子节点,Node下有方法getChildNodes()来获取某个节点的子节点的集合,返回NodeList类型. NodeList childNodes=book.getChildNodes()//包含book节点所有的子节点,两个标签之间的所有内容都看成是子节点. 2.通过childNodes的getLength()方法返回字点的个数(空格与换行字符看成为一个文本节点,标签与结束标签看成一个元素节点) 3.通过NodeList的item(i)获取指定位置子节点的名称返回Node类型.再用Node类型的getNodeName()方法就可以获取节点名 Node childnode=childNodes.item(i); String name=childnode.getNodeName(); 可以通过Node类的getNodeType()来区分文本类型的node以及元素类型的node,看当前Node类型是否与Node."节点类型英文全称"相同. if(childnode.getNodeType==Node.ELEMENT_NODE) {System.out.println(name)} 4.不能直接通过Node的getNodeValue()来获取节点的值,因为元素节点的nodeValue的返回值为null而且标签之间的文本被看做是该标签的子节点.所以要用Node的getFirstChild()此时获取的子节点为文本节点,Text节点类型的nodeValue返回值为节点内容,再getNodeValue()。 或者直接用Node的getTextContent()方法直接获取节点值。 如果该Node节点还存在其他子节点并且有节点值<name><a>广州大学</a>华软学院</name>,那么用getFirstChild().getNodeValue()一样是null,因为获取的子节点仍然是element类型的 如果用Node的getTextContent(),一样会把<a>元素节点当成是Content输出。 结果为广州大学华软学院.查看全部
-
根据 DOM,XML 文档中的每个成分都是一个节点。 DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个元素节点 包含在 XML 元素中的文本是文本节点 每一个 XML 属性是一个属性节点 注释属于注释节点 文本总是存储在文本节点中 在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。 不过,元素节点的文本是存储在文本节点中的。 在这个例子中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。 "2005" 不是 <year> 元素的值!查看全部
-
使用Dom解析xml文件的属性节点。 在不知道节点属性的个数和属性名时: 1、通过document.getElementsByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、Node node = NodeList.item(index)获得里面的节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、通过attrs.getLength()遍历集合,Node attr = atrrs.item(index) 6、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 前提已经知道book节点有且只有1个id属性,将book节点进行强制类型转换,转换成element类型。 1、通过document.getElementsByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、Element book=(Element)NodeList.item(i);//强制转换为element类型 4、string attrValue = book.getAttribute("id"); //参数为属性名,返回属性值查看全部
-
JAVA读取xml文件叫做解析 目的是获取xml的节点名,节点值,属性名,属性值. 目标是解析xml文件后,JAVA程序能够得到xml文件的所有数据. 有4种解析方法 1.DOM 2.SAX 3.DOM4J 4.JDOM 而DOM,SAX解析是java官方提供的. DOM解析方法 1.把xml文件复制到java项目中 2.创建DocumentBuilderFactory对象,用静态方法newInstance(); 3.创建DocumentBuilder对象,用DocumentBuilderFactory对象的newDocumentBuilder(); //系统会提示要捕获异常 4.通过DocumentBuilder的Parse(String name);来解析xml文件.此方法返回一个Document对象,导入Document的W3C那个包,//系统也会提示捕获异常 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder bf=dbf.newDocumentBuilder(); Document document=dbf.Parse("E:\\java\\text.xml");查看全部
-
XML可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发,可以跨平台传送数据. xml文件头要添加声明: <?xml version="1.0" encoding="UTF-8"?> 以问号开头,一般兼容版本为1.0,字符编码按自己需要查看全部
举报
0/150
提交
取消