2012-01-23 3 views
2

Я изменяю скрипт генератора XML, который извлекает данные из списка Sharepoint и генерирует XML из него.Вставить XElement в XCData

Один из разделов XML выглядит следующим образом:

<node> 
    <node2> 
     <![CDATA[ 
      <p>Some text</p> 
     ]]> 
    </node2> 
    <otherNodesHere>Yadda yadda</otherNodesHere> 
</node> 

Данные, тянули из списка данных будет «Какой-то текст» без окружающих тегов P.

Итак, что я желающей сделать это (фрагмент):

new XElement("node", 
    new XElement("node2", 
     new XCData(
      new XElement("p", variableForTheDatainSP)), 

Но я не могу сделать новый XCData (новый XElement ("р", ....)), Что было бы простым способом сделать это?

ответ

5

<p>Some text</p> не действительно a XElement - это просто текст, который выглядит как XML. Таким образом, вы будете использовать:

new XElement("node", 
    new XElement("node2", 
     new XCData("<p>Some text</p>"))) 

Или, если вы хотите, чтобы построить его черезXElement, вы всегда можете позвонить ToString():

new XElement("node", 
    new XElement("node2", 
     new XCData(
      new XElement("p", variableForTheDatainSP).ToString()), 
+0

Спасибо ... ToString() сделал трюк. – snowBlind

1

Это не элемент.
Весь смысл CDATA блоков состоит в том, что они могут только хранить текст.

Если вы хотите поместить обычный текст, который выглядит как XML, в блок CDATA, вы можете передать new XElement(...).ToString(), чтобы получить необработанную строку XML.

+0

я получаю, что, о CDATA. К сожалению, внешний вид XML из моих рук. Мне просто дали XML-документ, чтобы перейти от него, и ему нужно добавить скрипт генератора XML, чтобы убедиться, что он выплескивает идентичный XML с данными, извлеченными из наших списков. – snowBlind