首页 \ 问答 \ 通过SimpleXML返回XPath函数的结果(return result of XPath function via SimpleXML)

通过SimpleXML返回XPath函数的结果(return result of XPath function via SimpleXML)

似乎PHP SimpleXML XPath不允许获得XPath函数的结果:

$s = new \SimpleXMLElement('<test><node>A</node><node>B</node></test>');
var_dump($s->xpath("count(node)"));

返回一个空数组:

array(0) {
}

使用DOM时返回预期值2:

$dom = new \DOMDocument();
$dom->loadXML('<test><node>A</node><node>B</node></test>');
$xpath = new \DOMXPath($dom);
var_dump($xpath->evaluate("count(node)"));


float(2.0)

有没有办法直接用SimpleXML做同样的事情?


It seems that PHP SimpleXML XPath doesn't allow to get results of XPath functions:

$s = new \SimpleXMLElement('<test><node>A</node><node>B</node></test>');
var_dump($s->xpath("count(node)"));

Returns an empty array:

array(0) {
}

While Using DOM returns the expected value 2:

$dom = new \DOMDocument();
$dom->loadXML('<test><node>A</node><node>B</node></test>');
$xpath = new \DOMXPath($dom);
var_dump($xpath->evaluate("count(node)"));


float(2.0)

Is there a way to do the same directly with SimpleXML?


原文:https://stackoverflow.com/questions/18636106
更新时间:2024-01-06 07:01

最满意答案

你能从tfs构建服务器ping你的章鱼服务器吗? 你能从你的tfs构建服务器telnet到8081端口吗? 如果可以,您应该重建项目而不是为同一个存储库构建。 如果新的nuget版本不高于1.0.0.0,octopack可能会失败。 您必须从tfs构建模板中增加nuget版本。 以下命令必须适合您。 此命令用于使用powershell进行msdeploy部署。 如果要使用msdeploy,则必须将其安装到触角上。 我正在使用它进行Web项目部署。 命令行参数:

/t:Rebuild /p:AutoParameterizationWebConfigConnectionStrings=False 
/p:DebugSymbols=false /p:DebugType=None /p:IsAutoBuild=True 
/p:CreatePackageOnPublish=true /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\Myproject.zip";PackageAsSingleFile=True /p:RunOctoPack=true 
/p:OctoPackPackageVersion=%VERSION%-dev 
/p:OctoPackPublishPackageToHttp=http://octopus.yourdomain.com/nuget/packages /p:OctoPackPublishApiKey=API-xxxxxxxxxxxxx

Could you ping your octopus server from tfs build server? And could you telnet to 8081 port from your tfs build server? If you could, you should rebuild the project not build for the same repository. If the new nuget version is not higher than 1.0.0.0 octopack could fail. You must increment the nuget version from your tfs build template. The following commands must be work for you. This commands are for msdeploy deployment with powershell. If you want to use msdeploy you must install it to tentacles. I am using it for web project deployment. Command line arguments:

/t:Rebuild /p:AutoParameterizationWebConfigConnectionStrings=False 
/p:DebugSymbols=false /p:DebugType=None /p:IsAutoBuild=True 
/p:CreatePackageOnPublish=true /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\Myproject.zip";PackageAsSingleFile=True /p:RunOctoPack=true 
/p:OctoPackPackageVersion=%VERSION%-dev 
/p:OctoPackPublishPackageToHttp=http://octopus.yourdomain.com/nuget/packages /p:OctoPackPublishApiKey=API-xxxxxxxxxxxxx

相关问答

更多
  • 考虑到你的图书馆在服务启动时加载一次,我可能会选择一个带有多个步骤的章鱼项目。 举个例子: 停止服务 清理库文件夹 部署library1 部署library2 ..... ..... 部署并运行该服务 服务部署和安装是最后一步。 这样,您可以安全地运行部署中的所有步骤 ,并且您的服务应该可以将dll部署到文件夹中。 还有一点要记住,部署到新的/清理机器应该导致完全设置服务(具有所有必需的库)。 Taking into account your libraries are loaded once on a s ...
  • 此文件夹由Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget包添加。 如果你想在Asp.Net(.cshtml或.aspx)文件中支持C#6,那么它需要在那里,因为来自该文件夹的roslyn的csc.exe用于编译你的视图。 为了能够删除它(不部署它),您需要使用aspnet_compiler.exe 预编译Web应用程序 This folder is added by the Microsoft.CodeDom.Providers.DotNet ...
  • 我为TeamCity编写了一个Powershell步骤,查询JIRA API以获取与TeamCity正在构建的版本号等效的Fixed In版本的所有问题,然后再次查询JIRA API以获取问题详细信息,以便我可以构建Markdown中的发行说明,然后传递到Octopack以嵌入Nuget包中。 然后,当我进入Octopus时,我可以看到所有包含的票号和摘要,按问题类型(错误修复,新功能,改进等)分组。 鉴于使用Powershell创建Octopus步骤非常简单,以及JIRA API的易用性,您应该能够从Oc ...
  • 您提供的链接显示了如何从构建服务器(本例中为VSTS)创建包,这是推荐的方法。 打包+构建应该从构建服务器进行编排,如果可能的话,不要从IDE和IDE进行编排:) 也就是说,从Visual Studio中执行此操作的一个好方法是将一个依赖项添加到OctopusTools包中 , 该包将在构建期间下载Octo.exe 。 然后,您可以添加一个后期构建脚本,该脚本调用Octo.exe pack来创建您的包,然后Octo.exe push其推送到存储库。 Octo.exe pack文档: https : Octo ...
  • 你能从tfs构建服务器ping你的章鱼服务器吗? 你能从你的tfs构建服务器telnet到8081端口吗? 如果可以,您应该重建项目而不是为同一个存储库构建。 如果新的nuget版本不高于1.0.0.0,octopack可能会失败。 您必须从tfs构建模板中增加nuget版本。 以下命令必须适合您。 此命令用于使用powershell进行msdeploy部署。 如果要使用msdeploy,则必须将其安装到触角上。 我正在使用它进行Web项目部署。 命令行参数: /t:Rebuild /p:AutoParam ...
  • 来源: http : //docs.octopusdeploy.com/display/OD/Package+repositories#Packagerepositories-Usingexternalrepositories 然而; 你可以将各种包装推到八达通,例如 的NuGet 柏油 压缩 和更多 (来源: http : //docs.octopusdeploy.com/display/OD/Supported+Packages ) 最终,你需要创建包含你的工件的NuGet(或类似)文件,并将它们提升到 ...
  • 您是否通过构建服务器将当前的MVC nuget包发布到Octopus? 另一种方法是使用NuGet.exe这是一个命令行工具来创建包(Ocotopack是一个包装器)。 如果你正在使用像TeamCity这样的东西,那么它将被包含在NuGet Pack运行器中 - 它只需要一条NuSpec文件的路径。 如果您没有使用构建服务器,那么您可以运行一些post build命令来启动NuGet.exe。 这是Pack命令的命令行参考的链接 另外,确保您在项目中也获得了通常的NuSpec定义。 Are you rele ...
  • 自己发现了这个: 当我添加OctoPack NuGet包时,一切似乎都很好。 各种 帖子暗示,我查看了OctoPack.targets文件。 在这里我偶然发现了Install.ps1文件,它似乎应该在将NuGet包添加到项目时在VS项目的.csproj文件中注入一些构建操作。 接下来,我删除了NuGet包并尝试重新安装,但这次使用包管理控制台 ( View > Other Windows > Package Management Console )并使用以下命令: Install-Package OctoP ...
  • 更新 对于八达通来说,这可能是一个新手的错误。 问题中显示的错误实际上是找不到部署包的结果。 以下是通过文档和试验发现的错误: 八达通服务器(内置)仅限推送。 这意味着可以将包上载到此Feed但不会被使用。 要使用Octopus的服务器本地软件包,即之前从TeamCity推送到Octopus Server(内置)的软件包,您必须自己提供这些软件包。 您可以通过创建指向服务器程序包默认路径的外部源来通过Octopus为这些程序包提供服务: C:\Octopus\Packages 最重要的是,修复错误! 当对部 ...
  • 您可以在标记字段中使用以下“空”正则表达式: ^$ 这将选择所有非预发行包。 You can use the following 'empty' regex in the Tag field: ^$ This will select all non-prerelease packages.

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)