DOM4J 读取正则表达式 BUG
DOM4J Read Regex BUG
我目前正在使用 dom4j 从 xml 中读取正则表达式模式,但是即使字符串 return 与我输入的内容完全相同,匹配函数也总是 return false xml.
样本XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>
示例代码(无效):
public class Test
{
public static void main( String[] args ) throws DocumentException
{
File inputFile = new File("C://test/test.xml");
SAXReader saxBuilder = new SAXReader();
Document document = saxBuilder.read(inputFile);
Element rootElement = document.getRootElement();
String username_pattern_notwork = rootElement.elementTextTrim("username-pattern");
String username_pattern_work = "^\w+$";
if(!(Pattern.matches(username_pattern_notwork, "ooo"))){
System.out.println("===============Err=========");
}else{
System.out.println("OK");
}
}
}
如果在Pattern.matches(username_pattern_notwork, "ooo")中将变量username_pattern_notwork替换为username_pattern_work,它将正常工作
看完源码后,
dom4j 从 xml 读取的字符串已经被转义。
这意味着我不需要手动转义 xml 文件中的字符串。
即
<?xml version="1.0" encoding="UTF-8"?>
<root>
<username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>
我目前正在使用 dom4j 从 xml 中读取正则表达式模式,但是即使字符串 return 与我输入的内容完全相同,匹配函数也总是 return false xml.
样本XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>
示例代码(无效):
public class Test
{
public static void main( String[] args ) throws DocumentException
{
File inputFile = new File("C://test/test.xml");
SAXReader saxBuilder = new SAXReader();
Document document = saxBuilder.read(inputFile);
Element rootElement = document.getRootElement();
String username_pattern_notwork = rootElement.elementTextTrim("username-pattern");
String username_pattern_work = "^\w+$";
if(!(Pattern.matches(username_pattern_notwork, "ooo"))){
System.out.println("===============Err=========");
}else{
System.out.println("OK");
}
}
}
如果在Pattern.matches(username_pattern_notwork, "ooo")中将变量username_pattern_notwork替换为username_pattern_work,它将正常工作
看完源码后, dom4j 从 xml 读取的字符串已经被转义。
这意味着我不需要手动转义 xml 文件中的字符串。 即
<?xml version="1.0" encoding="UTF-8"?>
<root>
<username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>