2012-03-15 152 views
2

是否可以使用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.. 
+0

由于某种原因,似乎没有可能:该属性的CanEdit场是假的...... 我试图从完全的XmlDocument删除属性,并试图打电话 xNav.CreateAttribute(的String.Empty“的requestId “,string.Empty,”TESTIDVALUE“); 但该方法也不支持...当然必须是一种方法来添加/编辑atttribute与XPath? – stefjnl 2012-03-15 15:41:14

+0

无法用XPath修改任何东西,但它应该允许您找到要修改的属性节点,因此您可以使用一些外部API来进行修改;但不依赖于XPath,它取决于外部API。 – 2012-03-15 17:15:26

回答

1

很可能(在你没有显示的代码中),XPathNavigator是在XPathDocument之外构造的。 XPathDocument根据定义是只读的(这就是为什么它更高效)。

MSDN documentation

的XPathNavigator由XPathDocument的对象创建的对象 只读同时的XPathNavigator对象通过的XmlDocument创建的对象 可以编辑。”

如果你想用DOM更新节点,你必须使用另一个对象 - 比如一个XmlDocument。

当然,人们在7-8年前才意识到DOM并不是处理XML的最佳方式。

我绝对推荐使用XSLT进行XML处理 - 这是一种专门为树转换而设计的语言

相关问题