我的xml看起来像这样。我试图在Author元素中添加更多值时被困了一段时间。
我像这样加载它:
XDocument cdata = XDocument.Parse(text);
这里是示例xml:
<a xmlns="http://www" version="5.050">
<Books>
<Author> Poe,Edgar Allen Homer Walden</Author>
<Address></Address>
<State></State>
</Books>
<SYSTEM type="OTHER">
<ORGANIZATION id="" />
</SYSTEM>
<HMDA_INFO is_hoepa="N" is_hoepa_manual="N" />
</a>
只是旁注'a'不一定总是根元素名称,有时它的b或c所以我不能用根名称。
尝试这样做以访问作者,但我得到的序列不包含任何元素:
XDocument cdata = XDocument.Parse(text);
var addElement = cdata.Descendants("Books").First();
addElement.SetAttributeValue("Authors", "insert this.");
答案 0 :(得分:1)
以下代码将访问作者节点
var addElement = cdata.Descendants("Books").First();
var authodNode = addElement.Element("Author")
下面你可以找到我做过的测试
答案 1 :(得分:0)
你有两个问题。首先,Author
是一个元素,而不是属性。第二 - 你忘记了在a
元素中声明的命名空间:
XDocument cdata = XDocument.Parse(text);
XNamespace ns = "http://www";
var books = cdata.Descendants(ns + "Books").First();
var author = books.Element(ns + "Author");
author.Value = "insert this." + authors.Value;
或者,如果您只想将新属性添加到authors元素:
books.Element(ns + "Author").SetAttributeValue(ns + "Foo", "insert this.");