2016-10-28 2 views
1

を解析することはできませんよ、私は私はIOSドライバページのソース

String pageSource = driver.getPageSource(); 

を使用して、ページのソースを持って、今私はキャッシュにローカルにこのxmlファイルを保存する必要があります。だから私はxとyの属性の値のような要素の属性を取得する必要はなく、毎回element.getAttribute("x");を使用して取得する必要があります。しかし、私はいくつかの特殊文字にpageSource XMLファイルを解析することができません。この文字を削除することはできません。なぜなら、要素の値/テキストが必要な場合、特殊文字を削除すると異なるテキストを表示するからです。 Appiumは同じ方法でこれを行います。

答えて

3

私も同じ問題に直面していたし、私は私が書いたコードの下に使用して解像度を持って、それはあなたが問題のようなものを取得する場合

public static void removeEscapeCharacter(File xmlFile) { 

    String pattern = "(\\\"([^=])*\\\")"; 
    String contentBuilder = null; 
    try { 
     contentBuilder = Files.toString(xmlFile, Charsets.UTF_8); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 
    if (contentBuilder == null) 
     return; 
    Pattern pattern2 = Pattern.compile(pattern); 
    Matcher matcher = pattern2.matcher(contentBuilder); 
    StrBuilder sb = new StrBuilder(contentBuilder); 

    while (matcher.find()) { 

     String str = matcher.group(1).substring(1, matcher.group(1).length() - 1); 
     try { 
      sb = sb.replaceFirst(StrMatcher.stringMatcher(str), 
        StringEscapeUtils.escapeXml(str)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    try { 
     Writer output = null; 
     output = new BufferedWriter(new FileWriter(xmlFile, false)); 

     output.write(sb.toString()); 
     output.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

正常に動作し、それは特別な文字を削除して、再度解析とキャッチボール。

try { 
      doc = db.parse(fileContent); 
     } catch (Exception e) { 
      removeEscapeCharacter(file); 

      doc = db.parse(file); 
     } 

あなたの役に立つかもしれません。

+0

それは動作します。ありがとうございます。 – user7084787

1

SAXParserを使用して同じことを行うことができ、これに対して行うハンドラを追加できます。 を参照してくださいSAX Parser

+0

はい、そうです。すばらしいです –

関連する問題