Как я могу получить доступ к данным (CDATA) в этом xml-узле с помощью Xpath? - PullRequest
3 голосов
/ 12 мая 2011

У меня есть следующий XML:

<?xml version="1.0" encoding="UTF-8"?>
<mailAndMessageSettings>
    <settings>
        <add key="Url" value=""/>
        <add key="UserName" value=""/>
        <add key="Password" value=""/>
    </settings>
    <mail>
        <subject>      
            Mp3 Submission
        </subject>
        <body>
            <![CDATA[
                <meta http-equiv="Content-Type" content="text/html; charset="utf-8""/>
                <head></head>

                <body>
                <p>Hi,</p>

                <p>Please find the attached mp3</p>

                <p><a href="mymp3.mp33">here</a></p>

                <p>Regards,</br>
                Pete</p>

                </body>
                </html> 
            ]]>
        </body>
    </mail>    
</mailAndMessageSettings>

И я хочу использовать XPath:

/mailAndMessageSettings/mail/body

Однако, когда я его использую, он выбирает все от первого тега body (правильного) до тега body внутри html, а не тега body в документе XML ...

Как я могу выбрать все CDATA внутри тела XML без включенного тега CDATA?

Ответы [ 4 ]

1 голос
/ 12 мая 2011

Так что на самом деле я просто изменил тег внешнего тела на тег bodyHtml .... и затем использовал:

/mailAndMessageSettings/mail/bodyHtml
1 голос
/ 12 мая 2011

Вам нужно получить узел CDATA, загрузить его в отдельный XmlDocument и снова вызвать запрос XPath.

0 голосов
/ 12 мая 2011

Использование /mailAndMessageSettings/mail/body/text().

0 голосов
/ 12 мая 2011

Синтаксический анализатор только сделает CDATA доступным как текст, потому что это то, для чего он используется.

Если вы не проверяете это, и вы, похоже, не объявляете его как HTML (что ограничило бы наличие тегов с двойным телом), я не уверен, зачем вам нужна декларация CDATA. Если это потому, что он генерируется динамически, и вы не уверены, что может быть сгенерировано в строках, вы должны вместо этого поместить текст в динамически генерируемый html в CDATA.

...