나는 간단한 데이터 세트를 가진 xml을 가지고 있습니다. 이 데이터는 간단한 테이블에 표시되며 각 데이터 행에는 xml (<xsl:value-of select="position()"
/>)의 위치를 기반으로 테이블의 ID가 할당됩니다. 내 데이터가 아니기 때문에 데이터에 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);
이 어떤 요소를 제거하지 않습니다.
좋은 정보이지만 여전히 내가 뭘했는지 달성하지 못합니다. – Finchy70