Powershell 4 Windows Server 2008 R2
最近我编写了一个 Powershell 脚本来拨入我的机器的 IIS Web 配置文件的应用程序池。我真的不知道这种访问 XML 节点的方式的名称,但这是第一次完成的方式:
$appPoolNode = ($config['configuration']['system.applicationHost']['applicationPools']['add'] | where {$_.name -eq $AppPoolName})
遗憾的是,除了默认的应用程序池外,这对任何东西都不起作用。
因此,如果我想为创建的另一个应用程序池更改某些内容,我无法从上面的代码行返回任何内容。我请来了一位同事,他向我展示了访问 XML 节点的点表示法:
$appPoolNode = ($config.configuration.'system.applicationHost'.applicationPools.add | where {$_.name -eq $AppPoolName})
不知何故这段代码起作用了。
我的问题是:
第一个代码示例调用的是哪种 XML 访问,为什么点符号适用于其他应用程序池,而不是像第一个代码示例那样仅适用于 defaultappPool?
最佳答案
PowerShell 魔法的乐趣 :-)
您的 $config 变量是从 System.Xml.XmlNode 派生的某种类型。当您将一些字符串转换为 [xml] 时,PowerShell 会执行此操作。
此类型在其他方法中包括属性 Item,就像在 C# 中一样,它用于处理带括号的访问器语法,因此编写
$config['a']
解析为函数调用
$config.Item('a')
它返回一个值 - 与给定名称匹配的第一个子节点。
现在,如果为此使用 . 表示法,您只需调用另一个属性,但在本例中,PowerShell 在解析 XML 文件时动态添加了一个属性。
它为每个子节点名称和它在当前节点上找到的每个属性添加一个属性。如果有多个具有给定名称的子节点,它会使属性返回这些节点的数组,这是它与仅返回第一个值的 Item 方法的不同之处。 p>
要通过一个简单的示例来了解这一点,请考虑
$x = [xml]"<a> <b Id='1'/> <b Id='2'/> </a>"
然后 $x | Get-Member 显示常用的 XmlDocument 属性,包括 Item,以及返回单个 XmlElement 的属性 a。所以此时
$x['a']
$x.Item('a')
$x.a
所有返回相同。现在执行 $x.a |获取成员。您会看到 Item 仍然返回单个 XmlElement,但由于 b 在 XML 中出现不止一次,PowerShell 让 b 属性返回一个通用对象数组(恰好再次成为 XmlElement 类型)。
因此
$x.a.b
给你两个 Id 值,而
$x.a['b']
只返回第一个。
关于xml - Powershell 4 XML 节点访问符号谜题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417923/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::
我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi
这是一些奇怪的例子:#!/usr/bin/rubyrequire'rubygems'require'open-uri'require'nokogiri'print"withoutread:",Nokogiri(open('http://weblog.rubyonrails.org/')).class,"\n"print"withread:",Nokogiri(open('http://weblog.rubyonrails.org/').read).class,"\n"运行此返回:withoutread:Nokogiri::XML::Documentwithread:Nokogiri::
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
基本上我想选择一个节点(div),其中它的子节点(h1,b,h3)包含指定的文本。Childtext1Childtext2...Childtext3我期待的是/html/div/而不是/html/div/h1我在下面有这个,但不幸的是返回了child,而不是div的xpath。expression="//div[contains(text(),'Childtext1')]"doc.xpath(expression)我期待的是/html/div/而不是/html/div/h1那么有没有一种方法可以简单地使用xpath语法来做到这一点? 最佳答案
我正在尝试加载SAML协议(protocol)架构(具体来说:https://www.oasis-open.org/committees/download.php/3407/oasis-sstc-saml-schema-protocol-1.1.xsd),但在执行此操作之后:schema=Nokogiri::XML::Schema(File.read('saml11_schema.xsd'))我得到这个输出:Nokogiri::XML::SyntaxErrorException:Element'{http://www.w3.org/2001/XMLSchema}element',att
这个问题在这里已经有了答案:Nokogiri:SelectcontentbetweenelementAandB(3个答案)关闭2年前。我正在从url中抓取文本的div,并想删除具有backtotop类的段落下方的所有内容。我在stackoverflow上看到了一段遍历代码片段,看起来很有希望,但我不知道如何将它合并,所以@el只包含第一个p.backtotop之前的所有内容分区我的代码:@doc=Nokogiri::HTML(open(url))@el=@doc.css("div")[0]end遍历片段:doc=Nokogiri::HTML(code)stop_node=doc.css
我正在尝试为ChefRecipe编写一个库,以简化一些常见的搜索。例如,我希望能够在cookbook/libraries/library.rb中执行类似的操作,然后从同一Recipe中的Recipe中使用它:moduleExampledefself.search_attribute(attribute_name)returnsearch(:nodes,node[attribute_name])endend问题是,在Chef库文件中,node对象或search函数都不可用。似乎可以使用Chef::Search::Query.new().search(...)进行搜索,但我找不到任何可以访
我正在尝试使用Nokogiri来解析带有一些相当古怪的标记的HTML文件。具体来说,我正在尝试获取同时定义了id、多个类和样式的div。标记看起来像这样:titleListofstuff我正在尝试获取里面的问题.我可以毫无问题地获得具有单个id属性的div,但我想不出一种方法让Nokogiri获取具有和两个id类的div。所以这些工作正常:content=@doc.xpath("//div[id='foo']")content=@doc.css('div#foo')但是这些不返回任何东西:content=@doc.xpath("//div[id='bar']")content=@doc