[英]node.js xml to json objects
在Node中,我試圖將XML結構遷移到JSON,這將允許我訪問沒有數組的特定節點,但是猜測所有ECMA相關語言都存在該問題
基本上,我正在尋找一種這樣做的方法:
var siteSettings = configuration.settings.siteSettings
var site1 = siteSettings[0];
var site1Name = site1.name;
XML在哪里
<configuration>
<settings>
<siteSettings>
<siteSetting name="site1" path="path1"/>
<siteSetting name="site2" path="path2"/>
<siteSettings>
</settings>
<modules>
<module name="module1" action="action1">
<module name="module2" action="action2">
</modules>
</configuration>
但是,我發現的XML解析器模塊執行以下操作(偽):
configuration:{
settings:
[siteSettings:
[siteSetting: {name: "site1", path: "path1"},
siteSetting: {name: "site2", path: "path2"}]};
您的建議是什么-我是否走上正軌?
我認為您正在尋找這樣的東西:
{
"configuration":{
"settings":{
"siteSettings":[
{
"name":"site1",
"path":"path1"
},
{
"name":"site2",
"path":"path2"
}
]
},
"modules":[
{
"name":"module1",
"path":"action1"
},
{
"name":"module2",
"path":"action2"
}
]
}
}
如果可以假設XML格式永遠不會改變,則可以對從XML解析器收到的數據進行規范化。 這是一個基於psuedo XML的示例。
// Example of parsed XML
var xml = {
configuration: {
settings: [{
siteSettings: [{
siteSetting: {name: "site1", path: "path1"}
},{
siteSetting: {name: "site2", path: "path2"}
}
]
}]
}
};
var rawSiteSettings = xml.configuration.settings[0].siteSettings;
var siteSettings = [];
// Normalize siteSettings from XML
for(var i=0; i<rawSiteSettings.length; i++){
siteSettings.push(rawSiteSettings[i].siteSetting);
}
console.log(siteSettings); // this would equal [{name:"site1"}, {name:"site2"} ect...]
// Helper to search object by value
var getPropertyByName = function(data, value){
for(var prop in data){
if(data.hasOwnProperty(prop)){
if(data[prop].name === value){ // Checking by name only
return data[prop];
}
}
}
};
var firstSite = getPropertyByName(siteSettings, "site1");
var firstSiteName = firstSite.name;
var firstSitePath = firstSite.path;
console.log('Name: ' + firstSiteName); // site1
console.log('Site Path: ' + firstSitePath); // path1
編輯:您將需要滾動。
編輯2:我通過規范化的意思是:您正在使用“設置”和“ siteSettings”,它們都是對象內部的數組,並將它們設置為可行的格式。
您可以使用此簡單的節點模塊xml2js,請參考以下鏈接: https ://www.npmjs.com/package/xml2js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.