我正在尝试在PowerShell中处理一个1.7 to的xml文件。我有下面这行代码,但它失败了:
PS C:\data> $badges = Select-Xml -Path .\Badges.xml -XPath "//badges/row[UserId='8152']"但我得到以下错误:
Select-Xml : The file 'C:\data\Badges.xml' cannot be read: The input document has
exceeded a limit set by MaxCharactersInDocument.
At line:1 char:11
+ $badges = Select-Xml -Path .\Badges.xml -XPath "//badges/row[UserId='8152']"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (C:\data\Badges.xml:String) [Select-Xml], ArgumentException
+ FullyQualifiedErrorId : ProcessingFile,Microsoft.PowerShell.Commands.SelectXmlCommand对如何处理这个文件有什么想法吗?我应该从文件中得到十几个左右的元素,所以与整个文件的大小(大约有1500万个行元素)相比,输出是相当小的。
发布于 2016-02-16 06:06:17
Select-Xml具有硬编码限制MaxCharactersInDocument = 536870912 (0.5 for ),用于从文件加载文档。它不能处理和你一样大的文件。您需要自己加载XML文档,然后可以使用Select-Xml cmdlet或SelectNodes方法进行查询。
#Load document
$Xml=New-Object Xml
$Xml.Load((Convert-Path .\Badges.xml))
#Select-Xml cmdlet
Select-Xml -Xml $Xml -XPath "//badges/row[UserId='8152']"
#SelectNodes method
$Xml.SelectNodes("//badges/row[UserId='8152']")https://stackoverflow.com/questions/35412715
复制相似问题