2009-06-05 67 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看起來像這樣

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

的CDATA狀態越來越剝離出來。

回答

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 2009-06-05 22:35:30

0

您可能想檢查node.AppendChild()。WriteRaw(property)是否有效,因爲您似乎是手動設置XML字符串的格式。

+0

我曾嘗試,不走但其他職位得到它,謝謝。 – typemismatch 2009-06-05 22:35:53