gpt4 book ai didi

java - 按位置删除元素

转载 作者:行者123 更新时间:2023-11-30 06:24:41 26 4
gpt4 key购买 nike

我有一个 xml,其中包含一组简单的数据。该数据显示在一个简单的表格中,并且根据 xml 中的位置为表格中的每行数据分配一个 ID ( <xsl:value-of select="position()"/>)。我无法向数据添加 id 属性,因为它不是我的数据,但我需要根据此位置定位元素并删除它们。

public class Delete extends HttpServlet {

private final String XML_FILE = "data.xml";

public void init() throws ServletException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Disable browser caching
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

String index = request.getParameter("delete");

try {
// Load the current data.xml
SAXBuilder builder = new SAXBuilder();
Document xml_document = builder.build(new File(getServletContext().getRealPath("/") + XML_FILE));

Element root = xml_document.getRootElement();
root.removeChild(index);


XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
outputter.output(xml_document, new FileWriter(getServletContext().getRealPath("/") + XML_FILE));
}
catch(Exception ex) {}

// Once we have processed the input we were given
// redirect the web browser to the main page.
response.sendRedirect("/");
}

public void destroy() {

}

}

此代码不会删除正确的数据。有人知道如何通过位置找到根元素的子元素吗?

@rolfl

int index = Integer.parseInt(delete);
Element root = xml_document.getRootElement();
root.getChildren().remove(index);

这不会删除任何元素。

最佳答案

这里的问题是,该过程正在获取要作为字符串删除的索引,然后调用 removeChild(String) 方法......该方法查找第一个具有索引中任何(字符串)值的元素标记名称。

相反,您想要做的是将索引转换为 int,然后将根的子级视为列表......类似于:

int index = Integer.parseInt(request.getParameter("delete"));
root.getChildren().remove(index);

请参阅 getChildren() 的文档.

关于java - 按位置删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47444751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com