有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用java从xml文件中删除标记属性

我想用java从我的源xml文件中删除一些属性和标记,如果有人能帮助我,我将非常高兴。谢谢

XML文件

<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<table cellspacing="0" cellpadding="3" align="Center" rules="cols" bordercolor="#999999" border="1" id="DataGrid1" bgcolor="White" height="8" width="624" style="Z-INDEX: 111; LEFT: 120px; POSITION: absolute; TOP: 128px"> 
 <tbody>
  <tr bgcolor="#000084"> 
   <td><font color="White"><b>Date</b></font></td>
   <td><font color="White"><b>Time</b></font></td>
   <td><font color="White"><b>Quay</b></font></td>
   <td><font color="White"><b>Vessel</b></font></td>
   <td><font color="White"><b>Call Reference Number</b></font></td> 
  </tr>
  <tr bgcolor="#EEEEEE"> 
   <td><font color="Black">01.01.2014</font></td>
   <td><font color="Black">11:00</font></td>
   <td><font color="Black">P7</font></td>
   <td><font color="Black">&quot;SELFOSS&quot;</font></td>
   <td><font color="Black">NLRTM13029124 </font></td> 
  </tr>
  <tr bgcolor="Gainsboro"> 
   <td><font color="Black">01.01.2014</font></td>
   <td><font color="Black">15:00</font></td>
   <td><font color="Black">P6</font></td>
   <td><font color="Black">&quot;NEDLLOYD MARITA&quot;</font></td>
   <td><font color="Black">NLRTM13029408 </font></td> 
  </tr>
  <tbody>
  <table>
  <html>

我想把这个xml改成

<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<table> 
 <tbody>
  <tr> 
   <td>Date</td>
   <td>Time</td>
   <td>Quay</td>
   <td>Vessel</td>
   <td>Call Reference Number</td> 
  </tr>
  <tr> 
   <td>01.01.2014</td>
   <td>11:00</td>
   <td>P7</td>
   <td>&quot;SELFOSS&quot;</td>
   <td>NLRTM13029124</td> 
  </tr>
  <tr> 
   <td>01.01.2014</font></td>
   <td>15:00</font></td>
   <td>P6</font></td>
   <td>&quot;NEDLLOYD MARITA&quot;</td>
   <td>NLRTM13029408</td> 
  </tr>
  <tbody>
  <table>
  <html>

我必须用java完成。 如果有人能展示一些方法来实现这个目标,或者给出一些建议,那就太好了。非常感谢


共 (2) 个答案

  1. # 1 楼答案

    可以使用Java XML库(如Apache AXIOM)来操作XML。然而,由于某些标记没有正确关闭,所以您发布的文档不是有效的XML,这一点毫无意义

    根据XML数据的来源,AXIOM可以通过多种方式构建DOM

    有关更多信息,请参见公理Quick Start document。下面的代码段来自前面提到的快速入门文档,它从一个文件构造DOM:

    public void processFile(File file) throws IOException, OMException {
        // Create a builder for the file and get the root element
        InputStream in = new FileInputStream(file);
        OMElement root = OMXMLBuilderFactory.createOMBuilder(in).getDocumentElement();
    
        // Dome some processing...
    
        // Because Axiom uses deferred parsing, the stream must be closed AFTER
        // processing the document (unless OMElement#build() is called)
        in.close();
    }
    

    一旦拥有了DOM,就可以使用XPath之类的工具来查找要操作的XML节点(本例中的属性),并将它们从DOM中删除

  2. # 2 楼答案

    试着用这个

    XmlString=XmlString.replaceAll("\\<\\html(.+?)\\?\\>", "").trim();