Вставьте XElement в XCData - PullRequest
       18

Вставьте XElement в XCData

2 голосов
/ 23 января 2012

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

Один раздел 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 ("p", ....)). Какой простой способ это сделать?

Ответы [ 2 ]

5 голосов
/ 23 января 2012

<p>Some text</p> не на самом деле 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()),
1 голос
/ 23 января 2012

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

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

...