如何将books.xml
转换为CSV
并写入文件?
PS /home/nicholas/xml>
PS /home/nicholas/xml> $books = Import-Clixml books.xml
PS /home/nicholas/xml>
PS /home/nicholas/xml> $books.InnerXml
<?xml version="1.0"?><catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date><description>An in-depth look at creating applications
with XML.</description></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date><description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description></book><book id="bk103"><author>Corets, Eva</author><title>Maeve Ascendant</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-11-17</publish_date><description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description></book><book id="bk104"><author>Corets, Eva</author><title>Oberon's Legacy</title><genre>Fantasy</genre><price>5.95</price><publish_date>2001-03-10</publish_date><description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description></book><book id="bk105"><author>Corets, Eva</author><title>The Sundered Grail</title><genre>Fantasy</genre><price>5.95</price><publish_date>2001-09-10</publish_date><description>The two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
Oberon's Legacy.</description></book><book id="bk106"><author>Randall, Cynthia</author><title>Lover Birds</title><genre>Romance</genre><price>4.95</price><publish_date>2000-09-02</publish_date><description>When Carla meets Paul at an ornithology
conference, tempers fly as feathers get ruffled.</description></book><book id="bk107"><author>Thurman, Paula</author><title>Splish Splash</title><genre>Romance</genre><price>4.95</price><publish_date>2000-11-02</publish_date><description>A deep sea diver finds true love twenty
thousand leagues beneath the sea.</description></book><book id="bk108"><author>Knorr, Stefan</author><title>Creepy Crawlies</title><genre>Horror</genre><price>4.95</price><publish_date>2000-12-06</publish_date><description>An anthology of horror stories about roaches,
centipedes, scorpions and other insects.</description></book><book id="bk109"><author>Kress, Peter</author><title>Paradox Lost</title><genre>Science Fiction</genre><price>6.95</price><publish_date>2000-11-02</publish_date><description>After an inadvertant trip through a Heisenberg
Uncertainty Device, James Salway discovers the problems
of being quantum.</description></book><book id="bk110"><author>O'Brien, Tim</author><title>Microsoft .NET: The Programming Bible</title><genre>Computer</genre><price>36.95</price><publish_date>2000-12-09</publish_date><description>Microsoft's .NET initiative is explored in
detail in this deep programmer's reference.</description></book><book id="bk111"><author>O'Brien, Tim</author><title>MSXML3: A Comprehensive Guide</title><genre>Computer</genre><price>36.95</price><publish_date>2000-12-01</publish_date><description>The Microsoft MSXML3 parser is covered in
detail, with attention to XML DOM interfaces, XSLT processing,
SAX and more.</description></book><book id="bk112"><author>Galos, Mike</author><title>Visual Studio 7: A Comprehensive Guide</title><genre>Computer</genre><price>49.95</price><publish_date>2001-04-16</publish_date><description>Microsoft Visual Studio 7 is explored in depth,
looking at how Visual Basic, Visual C++, C#, and ASP+ are
integrated into a comprehensive development
environment.</description></book></catalog>
PS /home/nicholas/xml>
PS /home/nicholas/xml> $books | Export-Csv books.csv
PS /home/nicholas/xml>
PS /home/nicholas/xml> cat ./books.csv
"xml","catalog"
"version=""1.0""","System.Xml.XmlElement"
PS /home/nicholas/xml>
看起来$csv
被转换了,但是如何将其写入CSV
文件呢?
转换为JSON
也没有好到哪里去:
PS /home/nicholas/xml>
PS /home/nicholas/xml>
PS /home/nicholas/xml> $books | ConvertTo-Json
WARNING: Resulting JSON is truncated as serialization has exceeded the set depth of 2.
[
[],
[
[
"System.Xml.XmlElement",
"System.Xml.XmlElement",
"System.Xml.XmlElement",
..
即使X1 E0 F1 X为9或更大。
下面是$books
的输出:
PS /home/nicholas/xml>
PS /home/nicholas/xml> $books
xml catalog
--- -------
version="1.0" catalog
PS /home/nicholas/xml> $books.ChildNodes
Version : 1.0
Encoding :
Standalone :
Value : version="1.0"
InnerText : version="1.0"
Name : xml
LocalName : xml
NodeType : XmlDeclaration
PreviousSibling :
NextSibling : catalog
ParentNode : #document
ChildNodes : {}
Attributes :
OwnerDocument : #document
FirstChild :
LastChild :
HasChildNodes : False
NamespaceURI :
Prefix :
IsReadOnly : False
OuterXml : <?xml version="1.0"?>
InnerXml :
SchemaInfo : System.Xml.Schema.XmlSchemaInfo
BaseURI :
PreviousText :
book : {book, book, book, book…}
PS /首页/尼古拉斯/xml〉
其远离CSV
。
2条答案
按热度按时间inb24sb21#
Import-Clixml
* 不 * 用于导入任意XML文档; CLIXML数据是一种基于XML的序列化格式,用于表示.NET类型的示例以进行跨进程通信,例如由Export-Clixml
生成的数据。CLIXML通常在PowerShell remoting(以及更一般的跨进程通信)中 * 后台 * 使用。也许令人惊讶的是,* 没有 * 用于导入任意XML文档的通用cmdlet(然而,有一个cmdlet用于 * 查询和提取 * XML文档中的数据,即
Select-Xml
)。您必须使用
[xml]
类型(System.Xml.XmlDocument
)将XML数据导入DOM,然后DOM允许您将数据转换为不同的格式:注:在 Windows PowerShell 中,考虑将
-NoTypeInformation
与Export-Csv
一起使用,并使用-Encoding
参数来控制输出字符编码,默认为ASCII(!)。在 PowerShell(Core)7+ 中,幸运的是,-NoTypeInformation
现在是 * 隐含的 *,默认字符编码为(无BOM)UTF-8。输出量:
6vl6ewon2#
请尝试以下操作:
我更新了以下代码
1.因为数据包含逗号,所以在字段两边添加了双引号。
1.使用Regex合并描述字段以移除归位字符和额外空格。
使用程序集的系统使用程序集的System.使用程序集的集合System.Xml.Linq使用程序集的System.IO使用程序集的System.Text.RegularExpressions
文件名=“c:\temp\test.xml”文件名=“c:\temp\test. csv”文件名=“c:\temp\test.xml”文件名=“c:\temp\test.csv”
系统文件名为. IO. StreamWriter的文件名为.IO.StreamWriter的文件名为.IO.StreamWriter的文件名。
$books = $doc.后代(“书”)
foreach($本书中的$本书){
} $writer.Flush()$writer.Close()函数的函数调用