本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何在 Jython 中使用 Java DOM 删除 XML 元素?

发布于2025-01-18 21:46     阅读(968)     评论(0)     点赞(24)     收藏(5)


假设我有一个这样的 XML 文件 (bookstore.xml)

<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

我想删除= JK Rowlingbook的元素author
我知道我可以像这样获取所有与 author 匹配的元素 (Jython)

docFactory = DocumentBuilderFactory.newInstance()
docBuilder = docFactory.newDocumentBuilder()
doc = docBuilder.parse(bookstore.xml)
list = doc.getElementsByTagName("author")

我想将修改后的 XML 树写入 bookstore.xml。

谢谢 !


解决方案


以下方法有效

for i in range(list.getLength()):
    node = list.item(i)
    if node != None and node.getNodeName() == "book":
        children = node.getChildNodes()
        for j in range(children.getLength()):
            print "Looking for J K. Rowling in book"
            child = children.item(j)
            if  child.getNodeName() == "author" and child.getTextContent() == "J K. Rowling":
                print "************"
                print "Found!!!!!"
                print child.getNodeName()
                print node.getTextContent()
                node1= node.getParentNode().removeChild(child.getParentNode())


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/695231/8bbd01f198db0d7f975b/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)