既存のXml文字列をXElementに追加する方法
質問
既存のXml文字列をXElementに追加する方法
このコード
var doc = new XDocument(
new XElement("results", "<result>...</result>")
);
もちろんこれが生成されます
<results><result></result></results>
しかし、これが必要です
<results><result>...</result></results>
アイデアはありますか
解決
これは動作するはずです:
var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
他のヒント
Sani Singh Huttunenの回答により、私は正しい道を歩みましたが、 results 要素には1つの result 要素しか許可されていません。
var xmlString = "<result>sometext</result><result>alsotext</result>";
System.Xml.XmlExceptionで失敗します
複数のルート要素があります。
results 要素を文字列リテラルに移動することでこれを解決しました
var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";
ルート要素が1つだけで、解析された文字列が次のように親要素に直接追加されるようにします。
parent.Add(XElement.Parse(xmlString));
私の同等の回答がありますXmlWriter.WriteRawへ?
本質的に、既に有効なXMLであることがわかっている場合のみ、コンテンツのプレースホルダーを置き換えます。
var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);
このメソッドは、 XElement.Parse
で解析するよりも高速です。
所属していません StackOverflow