1

我有看起来像这样的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.");
4

2 回答 2

1

下面的代码将访问作者节点

var addElement = cdata.Descendants("Books").First();
var authodNode = addElement.Element("Author")

下面你可以找到我做过的测试

在此处输入图像描述

于 2013-01-08T15:59:19.253 回答
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;

或者,如果您只想向作者元素添加新属性:

books.Element(ns + "Author").SetAttributeValue(ns + "Foo", "insert this.");
于 2013-01-08T16:24:39.830 回答