快捷导航

setTextContent报错了

//本身Element中就不包含setTextContent属性。set出来的就只有setNodeValue和setAttribute这些。不知道是不是包引用出错了吗?package com.eravik.XML;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;//创建一个documentBuilderFactory的对象public class DOMTest {        public void createXML() {                DocumentBuilder db = getDocumentBuilder();                Document document = db.newDocument();                Element bookstore = document.createElement("bookStore");                // 向bookstore中添加子节点book                Element book = document.createElement("book");                Element name = document.createElement("name");//                name.getFirstChild().setNodeValue("冰与火之歌");                name.setTextContent("冰与火之歌");                book.appendChild(name);                book.setAttribute("id", "1");                // 将book节点添加到bookstore中                bookstore.appendChild(book);                // 将bookstore(已经包含了book)添加到dom树中                document.appendChild(bookstore);                // 将现有的树结构转换成xml文件                //创建Transformerfactory对象                TransformerFactory tsf = TransformerFactory.newInstance();                try {                        //创建transformer对象                        Transformer tf = tsf.newTransformer();                        //xml文件输出中进行换行                        tf.setOutputProperty(OutputKeys.INDENT,"yes");                        tf.transform(new DOMSource(document), new StreamResult(new File("books1.xml")));                                        } catch (TransformerException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }        }        public void DOMTest() {                // 创建一个documentBuilder的对象                try {                        DocumentBuilder db = getDocumentBuilder();                        // 通过documentBuilder对象的parse方法加载xml文件到当前项目下。                        Document document = db.parse("books.xml");                        // 通过document的getElementByTagName获取所有book节点的集合                        NodeList bookList = document.getElementsByTagName("book");                        // 遍历bookList                        System.out.println("一共有" + bookList.getLength() + "本书");                        for (int i = 0; i < bookList.getLength(); i++) {                                System.out.println("--------下面开始遍历第" + (i + 1) + "本书的内容--------");                                Node book = bookList.item(i);                                // 遍历book的属性                                NamedNodeMap attrs = book.getAttributes();                                System.out.println("第" + (i + 1) + "本书共有" + attrs.getLength() + "属性");                                for (int j = 0; j < attrs.getLength(); j++) {                                        // 通过item(index)方法获取某一个属性                                        Node attr = attrs.item(j);                                        System.out.println("属性名:" + attr.getNodeName());                                        System.out.println("--属性值:" + attr.getNodeValue());                                }                                // book节点只有一个属性,并且属性名是id,我们需要知道id的属性值。可以通过强制类型转换,将node转换成Element类型。                                // Element book = (Element)bookList.item(i);                                // String attrValue = book.getAttribute("id");                                // System.out.println("id属性的属性值位:"+attrValue);                                // 解析book节点的子节点                                NodeList childNodes = book.getChildNodes();                                System.out.println("第" + (i + 1) + "本书共有" + childNodes.getLength() + "个子节点");                                for (int k = 0; k < childNodes.getLength(); k++) {                                        // 区分text类型的node和element类型的node                                        if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {                                                String name = childNodes.item(k).getNodeName();                                                System.out.print("第" + (k + 1) + "个节点的节点名:" + name);                                                // System.out.println("--节点值是"+childNodes.item(k).getTextContent());                                                System.out.println("--节点值是" + childNodes.item(k).getFirstChild().getNodeValue());                                        }                                }                                System.out.println("--------结束遍历第" + (i + 1) + "本书的内容--------");                        }                } catch (SAXException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                } catch (IOException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }        }        public DocumentBuilder getDocumentBuilder() {                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();                DocumentBuilder db = null;                try {                        db = dbf.newDocumentBuilder();                } catch (ParserConfigurationException e) {                        e.printStackTrace();                }                return db;        }        public static void main(String[] args) {                DOMTest dom = new DOMTest();                dom.createXML();//                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//                // 创建一个documentBuilder的对象//                try {//                        DocumentBuilder db = dbf.newDocumentBuilder();//                        // 通过documentBuilder对象的parse方法加载xml文件到当前项目下。//                        Document document = db.parse("books.xml");//                        // 通过document的getElementByTagName获取所有book节点的集合//                        NodeList bookList = document.getElementsByTagName("book");//                        // 遍历bookList//                        System.out.println("一共有" + bookList.getLength() + "本书");//                        for (int i = 0; i < bookList.getLength(); i++) {//                                System.out.println("--------下面开始遍历第" + (i + 1) + "本书的内容--------");//                                Node book = bookList.item(i);//                                // 遍历book的属性//                                NamedNodeMap attrs = book.getAttributes();//                                System.out.println("第" + (i + 1) + "本书共有" + attrs.getLength() + "属性");//                                for (int j = 0; j < attrs.getLength(); j++) {//                                        // 通过item(index)方法获取某一个属性//                                        Node attr = attrs.item(j);//                                        System.out.println("属性名:" + attr.getNodeName());//                                        System.out.println("--属性值:" + attr.getNodeValue());//                                }////                                // book节点只有一个属性,并且属性名是id,我们需要知道id的属性值。可以通过强制类型转换,将node转换成Element类型。//                                // Element book = (Element)bookList.item(i);//                                // String attrValue = book.getAttribute("id");//                                // System.out.println("id属性的属性值位:"+attrValue);////                                // 解析book节点的子节点//                                NodeList childNodes = book.getChildNodes();//                                System.out.println("第" + (i + 1) + "本书共有" + childNodes.getLength() + "个子节点");//                                for (int k = 0; k < childNodes.getLength(); k++) {//                                        // 区分text类型的node和element类型的node//                                        if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {//                                                String name = childNodes.item(k).getNodeName();//                                                System.out.print("第" + (k + 1) + "个节点的节点名:" + name);//                                                // System.out.println("--节点值是"+childNodes.item(k).getTextContent());//                                                System.out.println("--节点值是" + childNodes.item(k).getFirstChild().getNodeValue());//                                        }//                                }//                                System.out.println("--------结束遍历第" + (i + 1) + "本书的内容--------");//                        }//                } catch (ParserConfigurationException e) {//                        // TODO Auto-generated catch block//                        e.printStackTrace();//                } catch (SAXException e) {//                        // TODO Auto-generated catch block//                        e.printStackTrace();//                } catch (IOException e) {//                        // TODO Auto-generated catch block//                        e.printStackTrace();//                }        }}

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP