xml - 我如何在 PowerShell 中使用 XmlReader 来传输大/巨大的 XML 文件?

标签 xml powershell

我有几千兆字节的 XML。 XML 中没有空格。

所以我写了一些 C# 代码来分割成单个文件(它有一些额外的代码来执行一些事情,例如在测试时随机化)

using (XmlReader MyReader = XmlReader.Create(@"d:\xml\test.xml"))
            {
                while (MyReader.Read())
                {
                    switch (MyReader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (MyReader.Name == "Customer")
                            {
                                XElement el = XElement.ReadFrom(MyReader) as XElement;
                                if (el != null)
                                {
                                    custNumber = (string)el.Element("CustNumber");
                                    output = @"d:\xml\output\" + custNumber;

                                    File.WriteAllText(output, el.ToString());
                                }                                    
                            }
                            break;
                    }
                }
            }

然后我使用 PowerShell 解析生成的文件,主要是因为我发现在服务器上使用它更容易,而规范可以更改,而且我可以即时更改脚本。

那么...将上述内容转换为 PowerShell 的最简单方法是什么,将 [.Net here] 放在所有内容之前?如果它有"<cust",我是否必须逐字节读取?在一条线上和"omer>"在下一个?

最佳答案

这应该与您想在 Powershell 中执行的操作非常接近:

$f = [System.Xml.XmlReader]::create("d:\xml\test.xml")

while ($f.read())
{
    switch ($f.NodeType)
    {
        ([System.Xml.XmlNodeType]::Element) # Make sure to put this between brackets
        {
            if ($f.Name -eq "Customer")
            {
                $e = [System.Xml.Linq.XElement]::ReadFrom($f)

                if ($e -ne $null)
                {
                    $custNumber = [string] $e.Element("CustNumber")

                    $e.ToString() | Out-File -Append -FilePath ("d:\xml\output\"+$e.ToString())
                }
            }
            break
        }
    }
}

关于xml - 我如何在 PowerShell 中使用 XmlReader 来传输大/巨大的 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820590/

相关文章:

powershell - 为什么 -Match 运算符有时返回匹配字符串,有时返回 bool 值?

algorithm - 快速过滤日志文件

powershell 强制参数为 null 时抛出错误

powershell - 是否可以从 PowerShell 中的函数覆盖 Prompt 函数?

xml - 编写 XSLT 将带有属性名称的 XML 转换为标签

java - 将 SQLite 数据库导出到 Android 中的 XML 文件

xml - Flex 中多首歌曲的问题 - AS3

c# - 为什么在 C# 和 PowerShell 中使用完全相同的代码加密 HMAC-SHA1 会显示不同的结果?

java - Spring RestClient 内容类型不匹配

javascript - jQuery: 对象 #<Document> 没有方法 'find'