通过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
最满意答案
你能从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 ...
-
如何使用Octopus Deploy和TFS 2013部署我的nuget包?(How do I deploy my nuget package with Octopus Deploy and TFS 2013?)[2022-07-15]
你能从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(或类似)文件,并将它们提升到 ...
-
如何为LightSwitch HTML客户端设置Octopus Deploy(How to setup Octopus Deploy for a LightSwitch HTML client)[2022-09-28]
您是否通过构建服务器将当前的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.