【发布时间】:2010-03-19 11:15:04
【问题描述】:
我有一个错误的 xml,其中包含空属性,我有一个解析器,它对空属性咳嗽。 我无法控制 xml 的生成,也无法控制在空属性上咳嗽的解析器。所以我想做的是一个预处理步骤,简单地删除所有空属性。
我设法找到了空属性,但现在我不知道如何删除它们:
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expr = xpath.compile("//@*");
Object result = expr.evaluate(d, XPathConstants.NODESET);
if (result != null) {
NodeList nodes = (NodeList) result;
for(int node=0;node<nodes.getLength();node++)
{
Node n = nodes.item(node);
if(isEmpty(n.getTextContent()))
{
this.log.warn("Found empty attribute declaration "+n.toString());
NamedNodeMap parentAttrs = n.getParentNode().getAttributes();
parentAttrs.removeNamedItem(n.getNodeName());
}
}
}
当访问 n.getParentNode().getAttributes() 时,这段代码给了我一个 NPE。 但是,当我无法访问元素时,如何从元素中删除空属性?
【问题讨论】:
-
该标签应该是 xslt 而不是 xlst?
-
哎呀!喜欢多眼球原则;-)
-
如果您在问题中根本没有提到 XSLT,为什么还要用“xslt”来标记它?
-
呃。又对了。没有像“OneOfThoseManyXMLStandardsIkeepMixingUp”这样的标签;-)