質問

既存のXml文字列をXElementに追加する方法

このコード

        var doc = new XDocument(
            new XElement("results", "<result>...</result>")
        );

もちろんこれが生成されます

  <results>&lt;result&gt;&lt;/result&gt;</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 で解析するよりも高速です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top