2009-06-05 11 views
0

これは異常な状況です。 XMLレスポンスの特定の値が単なる文字列値であってもラップされることを要求する第三者とのインタフェースを余儀なくされています。次のようにC#を使用したXMLのCDATA

Example: <Property name="someName" type="String"><![CDATA[someValue]]></Property> 

私たちは、ドキュメントにこれらのプロパティノードを追加している:

XPathExpression query = xPathNavigator.Compile(xpath); 

XPathNavigator node = xPathNavigator.SelectSingleNode(query.Expression, xmlNamespaceManager); 

string property = "<Property name='someName' type='String'><![CDATA[someValue]]></Property>"; 

node.AppendChild(property); 

問題があるが、結果のXMLは、CDATAが取り除かばかり続け、この

<Property name="someName" type="String">someValue</Property> 

のように見えます。

答えて

3

あなたは、データを書き込むためにしたXmlWriterを使用してこれを達成することができます

private static void WriteProperty(XmlWriter writer, string name, string type, string value) 
{ 
    writer.WriteStartElement("Property"); 
    writer.WriteAttributeString("name", name); 
    writer.WriteAttributeString("type", type); 
    writer.WriteCData(value); 
    writer.WriteEndElement(); 

} 

// call the method from your code 
XPathExpression query = xPathNavigator.Compile(xpath);  
XPathNavigator node = xPathNavigator.SelectSingleNode(query.Expression, xmlNamespaceManager); 
using (XmlWriter writer = node.AppendChild()) 
{ 
    WriteProperty(writer, "someName", "String", "someValue"); 
} 
+1

感謝!!!!私はここにビールを残しました。(b) – typemismatch

+0

うーん。ビールはちょっと遅かった(就寝時間、実際には)。あなたは夜に冷蔵庫に入れられますか? ;)(それがうまくいってうれしい) –

0

node.AppendChild()。WriteRaw(property)が機能するかどうかは、手動でXML文字列を手動でフォーマットしているように見えます。

+0

を私は行く、試すなかったが、他のポストはそれを得た、ありがとう。 – typemismatch

関連する問題