ich mit Namespaces folgenden XML-Struktur habe:Kopieren eines XML-Attribut mit Linq
<office:document-content
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:p text:style-name="Standard"><Text></text:p>
</office:text>
</office:body>
</office:document-content>
Dies stammt aus dem content.xml einer entpackten ODT Schriftsteller Datei. Jetzt möchte ich nur das Attribut mit dem inneren Text "<Text>" kopieren und die Kopie durch einen neuen Text ersetzen. Ich habe es versucht:
XmlFileOperations xml = new XmlFileOperations();
XDocument doc = XDocument.Load(Path.Combine(ConfigManager.InputPath, "File", "content.xml"));
var source = doc.Descendants()
.Where(e => e.Value == "<Text>")
.FirstOrDefault();
var target = new XElement(source);
target.Add(new XAttribute("Standard", source.Attribute(textLine)));
doc.Save(Path.Combine(ConfigManager.InputPath, "File", "content.xml"));
Dies funktioniert nicht. Es sagt mir, dass ich ein Zeichen im Text habe, das nicht auf den Namen angewendet werden kann. Wie kann ich in diesem Fall einfach mein Attribut kopieren?
Vielen Dank!
Edit: Das Ergebnis sollte sein
<office:document-content
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:p text:style-name="Standard"><Text></text:p>
<text:p text:style-name="Standard">some new value</text:p>
</office:text>
</office:body>
</office:document-content>
Nicht nur. Ich muss das Attribut kopieren, damit ich zwei identische Attribute habe und dann den Wert der Kopie ersetze. – Canox
@Canox - gewünschtes Ergebnis anzeigen –
ok Ich habe meine Frage bearbeitet – Canox