Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 使用谷歌&x27;带BaseX的libphonenumber_Xpath_Basex_Libphonenumber - Fatal编程技术网

Xpath 使用谷歌&x27;带BaseX的libphonenumber

Xpath 使用谷歌&x27;带BaseX的libphonenumber,xpath,basex,libphonenumber,Xpath,Basex,Libphonenumber,我正在使用刮一个在线电话簿。没有什么违法的,它属于一个非营利组织,我的老板是其中的一员,所以我可以使用它。我想要的是将所有这些号码添加到我的个人电话簿中,这样我就可以知道谁在给我打电话(主要是为了联系我的老板)。数据状况非常糟糕,尤其是数字(大约一千个数字,来自世界各地)。有些在E164中,有些不在,有些是完全无效的数字 我最初用来清理数据。它还可以很好地将数字调整为形状。这就像从Maven下载JAR一样简单,把它放在OpenRefine的lib目录中,然后在每个电话号码(numberStr)上

我正在使用刮一个在线电话簿。没有什么违法的,它属于一个非营利组织,我的老板是其中的一员,所以我可以使用它。我想要的是将所有这些号码添加到我的个人电话簿中,这样我就可以知道谁在给我打电话(主要是为了联系我的老板)。数据状况非常糟糕,尤其是数字(大约一千个数字,来自世界各地)。有些在E164中,有些不在,有些是完全无效的数字

我最初用来清理数据。它还可以很好地将数字调整为形状。这就像从Maven下载JAR一样简单,把它放在OpenRefine的lib目录中,然后在每个电话号码(numberStr)上像这样调用Jython:

从com.google.i18n.phonenumbers导入PhoneNumberUtil
从com.google.i18n.phonenumbers.phonenumberrutil导入PhoneNumberFormat
pu=PhoneNumberUtil.getInstance()
numberStr=str(int(value))
number=pu.parse('+'+numberStr,'ZZ')
try:country=pu.getRegionDeforNumber(数字)
除外:国家=‘美国’
number=pu.parse(numberStr,(如果pu.isValidNumberForRegion(number,country)为国家,否则为“美国”))
返回pu.format(number,PhoneNumberFormat.E164)
我最近发现了XPath和BaseX,并发现它非常简洁,而且HTML功能强大。虽然我可以让OpenRefine直接抛出一个VCF,但我找不到用BaseX插入libphonenumber的方法。因为两者都是用Java编写的,所以我认为这应该是直截了当的

我尝试了他们的文档(),但是BaseX没有发现现成的libphonenumber JAR。我尝试了各种路径、重命名和位置组合。我看到的唯一方法是编写一个包装器,将其放入XQuery模块(XAR)并导入。这将需要大量的时间和Java编码技能,我绝对没有后者

有没有一种简单的方法将libphonenumber与BaseX连接起来?或者一般来说,有没有一种方法可以将外部Javalib与XPath链接起来?我可以回到OpenRefine,但它的工作流非常笨拙。也没有办法要求网站管理员清理他的行为。或者,如果OpenRefine和BaseX不是适合此项工作的工具,是否有其他方法来清理数据,尤其是电话号码?我需要每隔几个月做一次(网站上的更改和更新),如果我不能完全自动化的话,这会变得非常乏味。
至少需要一个基本的工作代码示例作为答案。。(我直接在Windows 10 x64机器上使用独立的BaseX JAR)

libphonenumber-8.10.16.JAR
放在文件夹中..
BaseX/lib/custom
将其放在类路径上(请参阅)并运行
bin/basexgui.bat

declare namespace Pnu="java:com.google.i18n.phonenumbers.PhoneNumberUtil";
declare namespace Pn="java:com.google.i18n.phonenumbers.Phonenumber$PhoneNumber";
let $pnu:=Pnu:getInstance()
let $pn:= Pnu:parse($pnu,"044 668 18 00","CH")
return Pn:getCountryCode($pn)
返回字符串“41”


没有从XPath调用Java的标准方法,但是许多基于Java的XPath实现提供了自定义方法

libphonenumber-8.10.16.jar
放在文件夹中..
basex/lib/custom
将其放在类路径上(请参阅),然后运行
bin/basexgui.bat

declare namespace Pnu="java:com.google.i18n.phonenumbers.PhoneNumberUtil";
declare namespace Pn="java:com.google.i18n.phonenumbers.Phonenumber$PhoneNumber";
let $pnu:=Pnu:getInstance()
let $pn:= Pnu:parse($pnu,"044 668 18 00","CH")
return Pn:getCountryCode($pn)
返回字符串“41”


没有从XPath调用Java的标准方法,但是许多基于Java的XPath实现提供了自定义方法

这回答了我问题的第一部分“是否有一种简单的方法将libphonenumber与BaseX连接起来?”您能否解释一下另一部分“是否有一种方法将外部Java lib与XPath连接起来?”不确定您的意思。phonenumber函数可以像其他函数一样在XPath表达式中使用。试着运行
basexgui.bat
,而不是运行exe,因为exe中出现了一些错误,会拾取额外的JAR“有没有办法将外部Java库与XPath链接起来?”我的意思是,我的问题是特定于BaseX的,Java库可以连接到任何其他XPath环境中吗?这是一件很好的事情,我主要对BaseX解决方案感兴趣。
basexgui.bat
成功了,库立即被识别!安迪,一定要更新你的答案,指出这一点。同时,有人应该用BaseX提交一个bug,这样它就可以在没有批处理文件的情况下工作。这回答了我问题的第一部分“有没有一种简单的方法将libphonenumber与BaseX连接起来?”你能解释一下另一部分“有没有一种方法将外部Java lib与XPath连接起来?”不确定你的意思。phonenumber函数可以像其他函数一样在XPath表达式中使用。试着运行
basexgui.bat
,而不是运行exe,因为exe中出现了一些错误,会拾取额外的JAR“有没有办法将外部Java库与XPath链接起来?”我的意思是,我的问题是特定于BaseX的,Java库可以连接到任何其他XPath环境中吗?这是一件很好的事情,我主要对BaseX解决方案感兴趣。
basexgui.bat
成功了,库立即被识别!安迪,一定要更新你的答案,指出这一点。同时,应该有人向BaseX提交一个bug,这样它就可以在没有批处理文件的情况下工作。。