我想处理这样的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<ns:Documents xmlns:tc="http://fsrar.ru/WEGAIS/Ticket" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0">
<ns:Owner>
<ns:FSRAR_ID>3463047</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:Ticket>
<tc:TicketDate>2018-02-08T17:29:09.3041792</tc:TicketDate>
<tc:Identity />
<tc:DocId>2E47720A-58BC-4AF0-9159-5AD6A40C9792</tc:DocId>
<tc:TransportId>38d9de5a-dd41-44ca-9ef3-0e404fef4bce</tc:TransportId>
<tc:RegID>A13322D0-CB7F-455B-A7C6-C0CDC2AA4471</tc:RegID>
<tc:DocHash />
<tc:DocType>AsiiuTimesign</tc:DocType>
<tc:Result>
<tc:Conclusion>Accepted</tc:Conclusion>
<tc:ConclusionDate>2018-02-08T17:29:09.3041792</tc:ConclusionDate>
<tc:Comments>Документ успешно принят системой на обработку.</tc:Comments>
</tc:Result>
</ns:Ticket>
</ns:Document>
</ns:Documents>
由于Invoke-WebRequest而得到的结果:
$url = "http://server/queue"
$webpage = ([xml]((Invoke-WebRequest -TimeoutSec 60 $url).Content))
我得到的是一个错误:
Cannot convert value "<xml body goes here>" to type "System.Xml.XmlDocument". Error: "The specified node cannot be inserted as the valid child of this node, because
the specified node is the wrong type."
At line:5 char:1
+ $webpage = ([xml]((Invoke-WebRequest -TimeoutSec 60 $url).Content))
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastToXmlDocument
有人可以建议为什么我不能将Invoke-WebRequest的结果转换为XML类型以及如何处理它?</ p>
修改
好的,我尝试将请求内容保存到文件并在HEX编辑器中查看,现在我看到该文件以ff fe ff fe
开头。我还对另一个URL执行了另一个请求,结果的内容正在向XML投射,结果发现它在开始时只有ff fe
。我从文件中删除了第一个ff fe
,在脚本中读取它并成功地转换为XML。
现在我看到响应的内容本身就有BOM,但是当我运行时($ response).Content我得到一个包含两个BOM的字符串。为什么以及如何只使用一个BOM获得正确的字符串?