先遍历节点,删除文本节点或者空节点,DEMOfunction cleanWhitespace(node){ for (var x=0; x<node.childNodes.length; x++) { var child = node.childNodes[x]; //if it's a whitespace text node if ((child.nodeType == 3) && (!notspace.test(child.nodeValue))) { node.removeChild(node.childNodes[x]); //node.childNodes[x].removeNode(); x--; } //elements can have text child nodes of their own if(child.nodeType == 1) { cleanWhitespace(child); } } }
删除文本节点似乎不是解决办法... 我这里也没有特指XML DOM, HTML DOM同样有这个问题。 node.getElementsByTagName('div')会找出node里面包含的所有div 我试图这样写:node.childNodes.getElementsByTagName('div'),但是报错。
for (var x=0; x<node.childNodes.length; x++) {
var child = node.childNodes[x];
//if it's a whitespace text node
if ((child.nodeType == 3) && (!notspace.test(child.nodeValue))) {
node.removeChild(node.childNodes[x]);
//node.childNodes[x].removeNode();
x--;
}
//elements can have text child nodes of their own
if(child.nodeType == 1) {
cleanWhitespace(child);
}
}
}
我这里也没有特指XML DOM, HTML DOM同样有这个问题。
node.getElementsByTagName('div')会找出node里面包含的所有div
我试图这样写:node.childNodes.getElementsByTagName('div'),但是报错。
<body>
<script type="text/javascript">
var str = "<Count><group name='信息科'><groupid>20050549</groupid><person>3</person><days>29</days><sum>19.7</sum><per>3.23</per></group></Count>";var BrowserName = navigator.appName;
if (BrowserName == "Netscape")
{
//FireFox
var objXml = (new DOMParser()).parseFromString(str,"text/xml");
//自己查查资料
alert(objXml.getElementsByTagName("group").item(0).attributes[0].value);// 信息科
alert(objXml.getElementsByTagName("group").item(0).childNodes[0].firstChild.nodeValue);// 20050549
alert(objXml.getElementsByTagName("group").item(0).childNodes[1].firstChild.nodeValue);
alert(objXml.getElementsByTagName("group").item(0).childNodes[2].firstChild.nodeValue);
alert(objXml.getElementsByTagName("group").item(0).childNodes[3].firstChild.nodeValue);
alert(objXml.getElementsByTagName("group").item(0).childNodes[4].firstChild.nodeValue);
}
else
{
//IE
try
{
var objXml = new ActiveXObject("Msxml2.DOMDocument");
objXml.async = false;
objXml.resolveExternals = false;
objXml.loadXML(str);
alert(objXml.selectSingleNode("/Count/group").getAttribute("name")); //信息科
alert(objXml.selectSingleNode("/Count/group").childNodes[0].text); //20050549
//同理取其他值
}
catch(err)
{
alert(err.message);
}
}
</script>
</body>
</html>