返回信息流<?xml version="1.0" encoding="utf-8"?><Data svc_ID="9d64de08-6523-4da9-925c-144f0970cd96" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Datapoints><value datatype="temperature" Unit="鈩? Time="2012-11-09T10:50:55">17.4</value></Datapoints></Data>
怎么在这么一堆东西里提取出 17.4 这个数字啊?是用浮点数吗?可是用^\\d+(\\.\\d+)?$ 表示非负浮点数 不对欸……菜鸟一个,求各位大神大侠指点哇~~~~~~
这是一条镜像帖。来源:北邮人论坛 / java / #23852同步于 2012/11/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求问正则表达式~~~感激涕零
listar
2012/11/9镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
新手bd。不过既然是xml为啥不直接解析xml来获取呢?还有就是lz的正则应该只有取出独立一行的浮点数吧。如果要找的浮点数都在<value></value>标签中,就先配置这个标签好了
谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普……
【 在 zx723 的大作中提到: 】
: 新手bd。不过既然是xml为啥不直接解析xml来获取呢?还有就是lz的正则应该只有取出独立一行的浮点数吧。如果要找的浮点数都在<value></value>标签中,就先配置这个标签好了
【 在 listar 的大作中提到: 】
: 谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普……
应该可以吧,当做输入流来处理
【 在 listar 的大作中提到: 】
: 谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普……
恩,这个好像格式有些问题,在浏览器中打开报格式错误。我也是个新手,那试着写个正则匹配那个value标签吧,我不太清楚你要提取的浮点数是不是都在value标签里面。等大牛来指点下吧
Use this XPath: "//value/text()".
package com.github.wks.javajunks;
import java.io.ByteArrayInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
public class XPathTest {
public static String xmlStr = "<?xml version='1.0' encoding='utf-8'?><Data svc_ID='9d64de08-6523-4da9-925c-144f0970cd96' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><Datapoints><value datatype='temperature' Unit='鈩' Time='2012-11-09T10:50:55'>17.4</value></Datapoints></Data> ";
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new ByteArrayInputStream(xmlStr
.getBytes("UTF-8")));
XPathFactory xpf = XPathFactory.newInstance();
XPath xPath = xpf.newXPath();
XPathExpression expr = xPath.compile("//value/text()");
String result = expr.evaluate(doc);
System.out.println(result);
}
}
Output:
17.4
哇晒!要不要这么腻害!!!
【 在 wks 的大作中提到: 】
: Use this XPath: "//value/text()".
: [code=java]
: package com.github.wks.javajunks;
: ...................
【 在 wks 的大作中提到: 】
: Use this XPath: "//value/text()".
: [code=java]
: package com.github.wks.javajunks;
: ...................
大牛就是厉害,不过lz给的那个xml有点格式问题,不知道是手误,还是提取时有问题。大神是自己手动修改了那个xml字符串?
可能是字符集的问题。
【 在 zx723 的大作中提到: 】
: 大牛就是厉害,不过lz给的那个xml有点格式问题,不知道是手误,还是提取时有问题。大神是自己手动修改了那个xml字符串?