我想使用PowerShell脚本将具有相同XML属性格式的多个XML文件转换为JSON文件。我们的想法是创建一个JSON列表,每个项目都是XML文件的JSON表示。它可行吗?输入和输出的一个例子:
输入:
File1.xml
:
<File>
<Child1> First xml child 1</Child1>
<Child2>First xml child 2</Child2>
</File>
File2.xml
:
<File>
<Child1> Second xml child 1</Child1>
<Child2>Second xml child 2</Child2>
</File>
输出:
[
{
File: [
{Child1 : First xml child 1 },
{ Child2: First xml child 2}
]
},
{
File: [
{Child1 : Second xml child 1 },
{ Child2: Second xml child 2}
]
}
]
答案 0 :(得分:3)
在Powershell 7中,这对我有用:
import jpype
jpype.startJVM(classpath=['test/classes'], convertStrings=False)
j = jpype.JClass('jpype.common.Fixture') # success
j = jpype.JClass('jpype/common/Fixture') # fails
答案 1 :(得分:1)
以下使用辅助函数ConvertFrom-Xml
将仅非常简单的XML文档(例如示例文档)转换为带有有序键的嵌套哈希表,然后可以将其转换为JSON, ConvertTo-Json
:
# Helper function that converts a *simple* XML document to a nested hashtable
# with ordered keys.
function ConvertFrom-Xml {
param([parameter(Mandatory, ValueFromPipeline)] [System.Xml.XmlNode] $node)
process {
if ($node.DocumentElement) { $node = $node.DocumentElement }
$oht = [ordered] @{}
$name = $node.Name
if ($node.FirstChild -is [system.xml.xmltext]) {
$oht.$name = $node.FirstChild.InnerText
} else {
$oht.$name = New-Object System.Collections.ArrayList
foreach ($child in $node.ChildNodes) {
$null = $oht.$name.Add((ConvertFrom-Xml $child))
}
}
$oht
}
}
[xml[]] (Get-Content -Raw file[12].xml) | ConvertFrom-Xml | ConvertTo-Json -Depth 3
使用您的示例文件,可以得到:
[
{
"File": [
{
"Child1": " First xml child 1"
},
{
"Child2": "First xml child 2"
}
]
},
{
"File": [
{
"Child1": " Second xml child 1"
},
{
"Child2": "Second xml child 2"
}
]
}
]
答案 2 :(得分:0)
编写您自己的格式顶部
// To convert an XML node contained in string xml into a JSON string
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc);