在XML文件中搜索字符串

时间:2013-06-24 10:51:11

标签: java xml string full-text-search

我需要在XML文件中搜索字符串。我为此开发了以下功能

public  boolean IsTextInFile(String sFileName, String sVerifyText )
     {
        File file = new File(sFileName);
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String sCurrLine = "", sAllLines = "";
        boolean bStatus = false;

        while ((sCurrLine = reader.readLine()) != null) {
            sAllLines += sCurrLine;
        }       
        if (sAllLines.contains(sVerifyText)) {
            bStatus = true;     
        }
        reader.close();     
        return bStatus;
    }

现在字符串就像我要在xml文件中搜索

<docAttr type=\"abc\" name=\"pqr\">44</docAttr>

它总是返回假。

我尝试过给定的子串

当我尝试<docAttr type=\"abc\"时它返回true而name=\"pqr\">44</docAttr>为此也返回true。但是当我把它当作一个完整的

<docAttr type=\"abc\" name=\"pqr\">44</docAttr>

它返回假。

此外,我可以直接使用Internet Explorer中的find搜索我的字符串。

2 个答案:

答案 0 :(得分:2)

请注意,XML属性的顺序无关紧要,并且属性之间的空白也可能不同。这使得字符串搜索非常脆弱。尝试使用XPath。由于您使用的是Java,因此可以免费使用。

例如,要选择所有&lt; docAttr&gt;具有属性类型和名称的指定值并且包含文本“44”的元素:

//docAttr[@type='abc' and @name='pqr' and text()='44']

答案 1 :(得分:1)

String xml = xml.toString(); //or whatever methods it uses to convert.

//check if string has.
boolean doesContain = xml.contains("my word/s");