请帮助我解决以下问题。
问题出在xml解析中 我的xml代码是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root type="object">
<codeListValue type="object">
<personnelCategory type="array">
<item type="string">Regular</item>
<item type="string">International</item>
<item type="string">Contractor</item>
<item type="string">System</item>
<item type="string">Employee</item>
</personnelCategory>
<pcImages type="array">
<item type="string">Windows</item>
<item type="string">Linux</item>
<item type="string">MAC OS</item>
<item type="string">Engineering Image</item>
</pcImages>
</codeListValue>
</root>
解析代码与web os sdk中的解析代码相同。解析部分在这里:
parseXML: function() {
this.items = [];
//this.path="/root";
this.url='Values.xml';
this.$.getGoogleResults.url = this.url;
this.$.getGoogleResults.call();
},
... ... gotResultsSuccess:function(inSender,inResponse){
var xmlstring = inResponse;
var parser = new DOMParser();
var xmlobject = parser.parseFromString(xmlstring, "text/xml");
var nodes = document.evaluate('/root', xmlobject, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
//alert(result.textContent);
var i=0;
while(result)
{
this.items[i] = result.childNodes[0].nodeValue;
i++;
result=nodes.iterateNext();
}
this.items=result.textContent;
this.$.header.setContent(this.items);// [ this is a header component i have defined and i am setting its content here]
},
我得到的结果是 常规国际承包商系统......工程图像
XML中的完整文本内容是连续显示的。我是否获得单个节点和子节点。我得到所有这些的空值.PLease帮助一些代码示例。
谢谢:)
答案 0 :(得分:1)
代码中的问题是循环只能运行一次,即只有一个子节点。 下面的代码将检索所有子节点。
var nodes = document.evaluate('/root/codeListValue', xmlobject, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
//alert(result.textContent);
var i=0;
while(i<result.getElementsByTagName('item').length)
{
this.items[i] = result.getElementsByTagName('item')[i].childNodes[0].nodeValue;
i++;
}
希望这有帮助!
答案 1 :(得分:0)
我不太确定你想做什么,但这是我如何使用xml:
使用WebService组件并将handleAs设置为xml。
在onsuccess函数上,只需获取结果参数并执行:
res = result.getElementByName('some_element').
这将返回数组中名为“some_element”的所有元素。
阅读有关javascript xml解析的更多信息