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

时间:2014-01-02 12:57:26

标签: 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 个答案:

答案 0 :(得分:1)

您可以使用Java XML库(如Apache AXIOM)来操作XML。但是,由于某些标记未正确关闭,因此您发布的文档不是有效的XML值得一无所知。

根据XML数据的来源,有多种方法让AXIOM构建DOM。

有关详细信息,请参阅AXIOM 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中删除。

答案 1 :(得分:1)

尝试使用此

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