Powershell发送XmlRcpRequest的世界你好?
想要的东西,比如:Powershell发送XmlRcpRequest的世界你好?,xml,powershell,.net-core,xml-rpc,read-eval-print-loop,Xml,Powershell,.net Core,Xml Rpc,Read Eval Print Loop,想要的东西,比如: <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse> PS C:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
PS C:\> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS C:\> $xmlRPCResponse |Convert-XmlToString
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
或更完整的请求:
Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
生成类似的结果。一些东西:
$http=新对象Chilkat.http
$xmlReq=“demo.sayHello”
$xmlResponse=$http.XmlRpc(“http://www.cknotes.com/xmlrpc.php“,$xmlReq)
if($http.LastMethodSuccess-ne$true){
$($http.LastErrorText)
出口
}
$($xmlResponse)
除此之外,对于模块,响应在哪里?因此您的问题实际上是“如何将xml文档转换为具有良好可读格式的字符串”——答案可能如下所示:
function Convert-XmlToString
{
param(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[xml]$Xml
)
begin {
# Create formatting settings
$writerSettings = [System.Xml.XmlWriterSettings]@{Indent = $true; OmitXmlDeclaration = $true}
# Create StringBuilder
$stringBuilder = [System.Text.StringBuilder]::new()
}
process {
try {
# Create XmlWriter
$xmlWriter = [System.Xml.XmlTextWriter]::Create($stringBuilder, $writerSettings)
# Write xml document to XmlWriter
$xml.WriteContentTo($xmlWriter)
# Flush XmlWriter to output target (ie. the stringbuilder)
$xmlWriter.Flush()
# Output resulting string
$stringBuilder.ToString()
}
finally{
# Clean up
$xmlWriter.Dispose()
$stringBuilder = $stringBuilder.Clear()
}
}
}
您应该能够使用它执行以下操作:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
PS C:\> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS C:\> $xmlRPCResponse |Convert-XmlToString
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
PS C:\>$xmlrpresponse=Send XmlRpcRequest-Url”http://ping.baidu.com/ping/RPC2“-MethodName”weblogUpdates.extendedPing“-Params@('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS C:\>$xmlrpresponse|转换XmlToString
南达科他州
这很接近:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse | ConvertTo-Xml -As String <?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.Xml.XmlDocument">System.Xml.XmlDocument</Object>
</Objects>
PS /home/nicholas>
PS/home/nicholas>
PS/home/nicholas>$xmlrpresponse=发送XmlRpcRequest-Url”http://ping.baidu.com/ping/RPC2“-MethodName”weblogUpdates.extendedPing“-Params@('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')
PS/home/nicholas>
PS/home/nicholas>$xmlrpresponse |转换为Xml-As字符串
System.Xml.Xml文档
PS/home/nicholas>
虽然不是很理想的输出
感谢Mathias,请参见:
更好的结果:
PS /home/nicholas>
PS /home/nicholas> $xmlRPCResponse.OuterXml
<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><int>0</int></value></param></params></methodResponse>
PS /home/nicholas>
PS/home/nicholas>
PS/home/nicholas>$xmlrpresponse.OuterXml
0
PS/home/nicholas>
虽然这是个没用的例子。似乎有效。是否有更好的URL和示例参数可供测试?只是为了消费一个响应,或者打印它,真的。如上所述。@NicholasSaunders抱歉,我不明白这个问题。没关系,你回答了问题,谢谢。只是想找一个更有趣的例子。不用担心。这绝对不是您想要的-正如您所看到的,它将响应对象减少为字符串
System.Xml.XmlDocument
,您已经丢失了所有要检查的信息:)是否使用了点运算符?似乎没问题。不,我说的是转换成Xml
对。$xmlrpresponse.OuterXml
是否直观地将xml
打印到控制台?是的,$OuterXml
确实是所讨论的xml文档的字符串表示形式,因此这将起作用(尽管格式不太好)