我无法解析 IOS 驱动程序页面源
I am not able to parse IOS driver page source
我使用
获取了页面源
String pageSource = driver.getPageSource();
现在我需要将这个 xml 文件保存到本地缓存中。所以我需要获取元素属性,如 x 和 y 属性值,而不是每次都使用 element.getAttribute("x");
。但是我无法将 pageSource xml 文件解析为某些特殊字符。我无法删除此字符,因为如果我需要元素 value/text,如果我删除特殊字符,它会显示不同的文本。 Appium 是使用相同的方式来做到这一点。
我也遇到了同样的问题,我使用以下我编写的代码得到了解决,并且工作正常
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);
}
它可能适合你。
我可以使用 SAXParser 做同样的事情,并为此添加处理程序。
参考 SAX Parser
我使用
获取了页面源String pageSource = driver.getPageSource();
现在我需要将这个 xml 文件保存到本地缓存中。所以我需要获取元素属性,如 x 和 y 属性值,而不是每次都使用 element.getAttribute("x");
。但是我无法将 pageSource xml 文件解析为某些特殊字符。我无法删除此字符,因为如果我需要元素 value/text,如果我删除特殊字符,它会显示不同的文本。 Appium 是使用相同的方式来做到这一点。
我也遇到了同样的问题,我使用以下我编写的代码得到了解决,并且工作正常
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);
}
它可能适合你。
我可以使用 SAXParser 做同样的事情,并为此添加处理程序。 参考 SAX Parser