我在Powershell中有以下XML:
[Xml]$MyXmlVariable = @"
<Mylist>
<Item Number="1">
<Name>"AMD Ryzen 5 3600x"</Name>
<Type>"CPU"</Type>
<Price>"$169.99"</Price>
<Where>"Amazon"</Where>
<Other>
<ThreadCount>"12"</ThreadCount>
<Cores>"6"</Cores>
</Other>
</Item>
</MyList>
"@
它对我来说似乎很不错,但是当我尝试定义它时,出现了错误
Cannot convert value "<Mylist>
<Item Number="1">
<Name>"AMD Ryzen 5 3600x"</Name>
<Type>"CPU"</Type>
<Price>".99"</Price>
<Where>"Amazon"</Where>
<Other>
<ThreadCount>"12"</ThreadCount>
<Cores>"6"</Cores>
</Other>
</Item>
</MyList>" to type "System.Xml.XmlDocument". Error: "The 'Mylist' start tag on line 1
position 2 does not match the end tag of 'MyList'. Line 12, position 3."
At line:1 char:1
+ [Xml]$MyXmlVariable = @"
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataExcepti
on
+ FullyQualifiedErrorId : RuntimeException
AFAIK似乎没有错误,但Powershell表示相反。请帮忙
XML是区分大小写的,因此这样的XML:
<test></Test>
出现错误也将不起作用
Cannot convert value "<test></Test>" to type "System.Xml.XmlDocument". Error: "The 'test'
start tag on line 1 position 2 does not match the end tag of 'Test'. Line 1, position 9."
At line:1 char:1
+ [xml]"<test></Test>"
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastToXmlDocument
在您的XML中,开始标签和结束标签是不同的:
[Xml]@"
<Mylist>
<!--l is not capitalized-->
<Item Number="1">
<Name>"AMD Ryzen 5 3600x"</Name>
<Type>"CPU"</Type>
<Price>"$169.99"</Price>
<Where>"Amazon"</Where>
<Other>
<ThreadCount>"12"</ThreadCount>
<Cores>"6"</Cores>
</Other>
</Item>
</MyList>
<!--l is capitalized-->
"@
这意味着<Mylist>
和</MyList>
是两个不同的节点。
这是导致您出错的原因,请尝试
[Xml]$MyXmlVariable = @"
<MyList>
<Item Number="1">
<Name>"AMD Ryzen 5 3600x"</Name>
<Type>"CPU"</Type>
<Price>"$169.99"</Price>
<Where>"Amazon"</Where>
<Other>
<ThreadCount>"12"</ThreadCount>
<Cores>"6"</Cores>
</Other>
</Item>
</MyList>
"@
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句