当前位置:编程学习 > JAVA >>

xml解析的问题,很郁闷......

//向xml文档中添加节点<出售价>39.00</出售价>
@Test
public void add()throws ParserConfigurationException, SAXException, IOException, Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder =factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");

NodeList list = document.getElementsByTagName("书");
Element element = document.createElement("出售价");
element.setTextContent("39.00");

for(int i = 0; i < list.getLength();i++)
{
Element element1= (Element)list.item(i);
element1.appendChild(element);
}

//把更新后的对象树从内存写回到xml文档
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));


}


<书架>
<书>
<书名 name="eeee">java培训教程</书名>
<作者>张孝祥</作者>
<售价>109元</售价>
</书>
<书>
<书名>js网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
结果为什么是这样?
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
<书>
<书名 name="eeee">java培训教程</书名>
<作者>张孝祥</作者>
<售价>109元</售价>
</书>
<书>
<书名>js网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
<出售价>39.00</出售价><出售价>39.00</出售价></书>
</书架>
--------------------编程问答-------------------- 上边的循环为什么没有起作用? --------------------编程问答-------------------- --------------------编程问答-------------------- Element element = document.createElement("出售价");
element.setTextContent("39.00");
创建的元素开始追加到第一个节点-书的子元素中,第二次循环就把这个元素重新赋给了第二个子结点的子元素
也就是说从原来的位置移到了新位置。所以循环结果只看到了最后一个添加成功了

再循环体内创建元素,然后追加。 --------------------编程问答--------------------
引用 3 楼 lvzg_005 的回复:
Element element = document.createElement("出售价");
element.setTextContent("39.00");
创建的元素开始追加到第一个节点-书的子元素中,第二次循环就把这个元素重新赋给了第二个子结点的子元素
也就是说从原来的位置移到了新位置。所以循环结果只看到了最后一个添加成功了

再循环体内创建元素,然后……

为什么第二个书后会添加两个呢? 还是不懂 --------------------编程问答--------------------


改为:


 
     
        for(int i = 0; i < list.getLength();i++)
        {
        Element element = document.createElement("出售价");
        element.setTextContent("39.00");
            Element element1= (Element)list.item(i);
            element1.appendChild(element);
        }
--------------------编程问答--------------------
引用 5 楼 fangmingshijie 的回复:
Java code?123456789101112改为:                  for(int i = 0; i < list.getLength();i++)        {        Element element = document.createElement("出售价");        element.setTextContent("39.0……

为什么不能写在外面?
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,