获取XML根节点名称


package com.chris.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class XMLRootSearcher {

public String findRootElementName(String xml) {
String result = null;

Pattern regex = null;
Matcher acceptor = null;

try {
// http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-Name
// Name ::= NameStartChar (NameChar)*
String namePattern = "<(([:_A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF"
+ "\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D"
+ "\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"
+ "])([:_A-Za-z0-9\\."
+ "\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D"
+ "\\u0300-\\u036F\\u037F-\\u1FFF\\u200C-\\u200D"
+ "\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"
+ "\\-])*)";

regex = Pattern.compile(namePattern, Pattern.CANON_EQ);

acceptor = regex.matcher(xml);
} catch (PatternSyntaxException pse) {
pse.printStackTrace(System.err);

return result;
}

if (acceptor.find()) {
if (null != acceptor.group(1)) {
result = acceptor.group(1);
}
}

return result;
}

public static void main(String[] args) {

String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?><books><book></book></books>";
XMLRootSearcher searcher = new XMLRootSearcher();
System.out.println( searcher.findRootElementName( xmlStr ) );

}

}


运行结果:

books
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值