2015-08-19 183 views
0

我有一个文件字符串如下字符串替换基于属性

<html> 
<head> 
    <body> 
     <normalstring> 
      <ul>    
       <li> 
       </li> 
      </ul> 
     </normalstring 
      <teststring name="one" delete="yes"> 
       <ul>    
        <li> 
        </li> 
       </ul> 
      </teststring> 
      <teststring name="one" delete="yes"> 
       <ul>    
        <li> 
        </li> 
       </ul> 
      </teststring> 
     </body> 
    </head> 
</html> 

我想查找的字符串节点<teststring>,并采取从<teststring> to </teststring> 采取整个字符串以字符串后,我想查找的字符串有属性“删除”或不? 如果找到的字符串有“删除”我想用“空”替换整个字符串(我的意思是我想删除找到的子字符串,它的内容“ 如果找到的字符串中没有”删除“属性,我想删除节点只<teststring name="one" delete="yes">不是里面的内容。

我想在字符串不字符串作为文档转换为处理这个问题。因为我解析记录字符串后得到一些问题。

谢谢, Jey

+0

你到目前为止尝试了什么? –

回答

0

首先,您应该阅读一些XML解析文档。有几个XML解析器,但我通常使用DOM解析器。可以在www.w3schools.com上找到很好的文档。 要访问节点,您必须创建一个DocumentBuilderFactory,一个documentBuilder和一个Document。接下来,你必须在文档中查找所需的节点名称,如下面的例子:

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance(); 
DocumentBuilder b = f.newDocumentBuilder(); 
Document doc = b.parse(File file); 
NodeList nodes = doc.getElementsByTagName("teststring"); 

接下来,检索节点属性,你必须创建一个Element对象存储从节点列表特定的节点和使用字符串来存储属性的值。您可以创建一个循环来遍历所有存储的节点,并且只能达到您想要的节点。

Element ele = nodes.item(i); 
String s = ele.getAttribute("delete"); 

然后,您可以检查是否存储在s比赛“是”与.equals命令字符串。我把最后一部分留给你,弄清楚如何删除你想要的字段。希望这有助于:)

+0

嗨,谢谢你的回复。我已经完成了这个使用XML解析器,但我想要使用正则表达式来做到这一点。 – user1428019