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である場合もあるため、ルート名で行くことはできません。

Authorにアクセスするためにこれを実行しようとしましたが、シーケンスに要素が含まれていません。

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

2つの問題があります。まず、それAuthorは属性ではなく要素です。そして2番目-あなたは要素で宣言された名前空間を忘れました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.");
于 2013-01-08T16:24:39.830 に答える