Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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
Powershell发送XmlRcpRequest的世界你好?_Xml_Powershell_.net Core_Xml Rpc_Read Eval Print Loop - Fatal编程技术网

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文档的字符串表示形式,因此这将起作用(尽管格式不太好)