我在XSD中有一个我想要修改的节点。我想更改此节点中的“name”值:
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
然而,当我尝试通过此代码找到该节点时,我得到没有节点或错误,这取决于我尝试的。
xsdDoc.Descendants("element").Where(x => x.Attribute("name").Value == "NewDataSet").Single().SetAttributeValue("name", "newValue");
Linq To Xsd不是一个选项,因为它看起来像是开源的,这将意味着各种繁文缛节(在工作中)。
这可能,或者我运气不好?
相关(但不相同):Linq to XML - update/alter the nodes of an XML Document
答案 0 :(得分:3)
“xs”命名空间需要一个XNamespace,然后需要使用xsdDoc.Descendants(ns+"element")
。
XNamespace xs = "http://www.w3.org/2001/XMLSchema";
doc.Descendants(xs + "element").
Where(x.Attribute("name") != null
&& x => x.Attribute("name").Value == "NewDataSet").First().
SetAttributeValue("name", "newValue");
答案 1 :(得分:1)
只是一个猜测,但它可能是一个命名空间问题,尝试使用LocalName,就像这个问题: