首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JDom删除具有特定属性的元素时出错

使用JDom删除具有特定属性的元素时出错
EN

Stack Overflow用户
提问于 2013-05-04 06:30:54
回答 1查看 201关注 0票数 0

下面是我的XML文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<record>
  <data id="2-1">
    <ns>45</ns>
    <hfdi />
    <hfdv>0.26</hfdv>
  </data>
  <data id="2-3">
    <ns>49</ns>
    <hfdi />
    <hfdv>0.34</hfdv>
  </data>
</record>

我尝试使用JDOM删除具有特定属性的元素。

代码语言:javascript
复制
Document doc =null;
try{
    InputStream is = Files.newInputStream(Paths.get("config.xml"),StandardOpenOption.READ)
    doc = (Document)((new SAXBuilder()).build(is));
}catch(Exception ex){//do something}

for(Element elem : doc.getRootElement().getChildren("data")){
    if(elem.getAttribute("id").getValue().equals("2-3")){
        elem.detach();
    }
}

XMLOutputter xo = new XMLOutputter();
xo.setFormat(Format.getPrettyFormat());
try{
    OutputStream os = Files.newOutputStream(Paths.get("config.xml"), StandardOpenOption.WRITE)
    xo.output(doc, os);
}catch(Exception ex){//do something}

然后我的XML就会变成这样:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<record>
  <data id="2-1">
    <ns>45</ns>
    <hfdi />
    <hfdv>0.26</hfdv>
  </data>
</record>
  "2-3">
    <ns>49</ns>
    <hfdi />
    <hfdv>0.34</hfdv>
  </data>
</record>

元素"2-3“仍然在那里,没有头!

似乎我想要删除的元素确实被正确地删除了。我怎么才能修复它?

任何帮助都将受到高度的感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-04 07:08:21

星,我相信你必须打开一个文件来写,然后你覆盖文件的开头,但你不会首先截断文件。你最终会得到你所拥有的东西。

至于detatch()与removeContent(...),分离会更快,但这并不是导致问题的原因。

您能提供有关如何打开和写入文件的更多详细信息吗?

编辑:非常好。你的Files.newOutputStream(....)方法调用需要设置TRUNCATE_EXISTING选项和写入选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16368490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档