是否可以使用XPath设置属性值?
问题描述:
是否可以使用XPath设置属性值,如下所示?是否可以使用XPath设置属性值?
XPathNavigator xNav = doc.CreateNavigator();
xNav.MoveToAttribute("requestID", String.Empty);
xNav.SetAttributeValue?? // need correct method to set a (new) value for current node-attribute..
答
很可能(在你没有显示的代码中),XPathNavigator是在XPathDocument之外构造的。 XPathDocument根据定义是只读的(这就是为什么它更高效)。
“的XPathNavigator由XPathDocument的对象创建的对象 只读同时的XPathNavigator对象通过的XmlDocument创建的对象 可以编辑。”
如果你想用DOM更新节点,你必须使用另一个对象 - 比如一个XmlDocument。
当然,人们在7-8年前才意识到DOM并不是处理XML的最佳方式。
我绝对推荐使用XSLT进行XML处理 - 这是一种专门为树转换而设计的语言。
由于某种原因,似乎没有可能:该属性的CanEdit场是假的...... 我试图从完全的XmlDocument删除属性,并试图打电话 xNav.CreateAttribute(的String.Empty“的requestId “,string.Empty,”TESTIDVALUE“); 但该方法也不支持...当然必须是一种方法来添加/编辑atttribute与XPath? – stefjnl 2012-03-15 15:41:14
无法用XPath修改任何东西,但它应该允许您找到要修改的属性节点,因此您可以使用一些外部API来进行修改;但不依赖于XPath,它取决于外部API。 – 2012-03-15 17:15:26