Разбор XML с HTML через C # веб-API - PullRequest
0 голосов
/ 31 января 2019

Это мой xml (немного укороченный):

<document stored_search_id="11826309" id_site="184569" id_article="86428" hidden="false" position="1" equalgroup="3597146365">
    <unix_timestamp>1548924770</unix_timestamp>
    <header matches="false">
        <text>Mobilstrul för Tele2 - problem ringa 112</text>
    </header>
    <short_header matches="false" length="251" removed="0">
        <text>Mobilstrul för Tele2 - problem ringa 112</text>
    </short_header>
    <summary matches="false">
        <text> Samhälle Kunder i hela landet har rapporterat problem med mobiltelefoni med operatörerna Tele2 och Comviq. Användarna har dålig eller ingen täckning och varken samtal eller internet i mobilen fungerar.</text>
    </summary>
    <short_summary matches="false" length="957" removed="94">
        <text> Samhälle Kunder i hela landet har rapporterat problem med mobiltelefoni med operatörerna Tele2 och Comviq. Användarna har dålig eller ingen täckning och varken samtal eller internet i</text>
    </short_summary>
    <body matches="false">
        <p>
            <text>Enligt Joel Ibson, kommunikationsansvarig på Tele2 började problemen vid tretiden på natten.</text>
        </p>
        <text>  </text>
        <p>
            <text>Det var en omfattande, rikstäckande störning. Den blev snabbt bättre, men det finns fortfarande problem, framför allt i Göteborgsområdet.</text>
        </p>
    </body>     
</document>

И это объект, с которым я хочу разобрать его:

 [XmlRoot(ElementName = "document")]
public class Document
{
    [XmlElement(ElementName = "unix_timestamp")]
    public long UnixTimestamp { get; set; }

    [XmlElement(ElementName = "header")]
    public Header Header { get; set; }

    [XmlElement(ElementName = "short_header")]
    public ShortHeader ShortHeader { get; set; }

    [XmlElement(ElementName = "summary")]
    public Summary Summary { get; set; }

    [XmlElement(ElementName = "short_summary")]
    public ShortSummary ShortSummary { get; set; }

    [XmlElement(ElementName = "body")]
    public string Body { get; set; }
}

Как вы можете видеть мое телоимеет тип string, но в xml это какой-то html.

Я отправляю xml из файла:

   var contents = File.ReadAllText(file);
                var httpContent = new StringContent(contents, Encoding.UTF8, "application/xml");
                var resoponse = await httpClient.PostAsync(uri, httpContent);

                File.Move(file, file.Replace(folderPath, $@"{folderPath}\Done"));

в мой метод API:

[AllowAnonymous]
[HttpPost]
[Route("")]
public async Task SearchResult([FromBody] SearchResultDataContract searchResult)
{

Но всякий раз, когда мое тело является частью объекта SearchResultDataContract, оно не может выполнить синтаксический анализ xml, и поэтому оно становится пустым.

Поэтому я предполагаю, что оно пытается проанализировать Body как xml вместо строки / html итогда если не получится.Итак, мой вопрос, как я могу разобрать html тела в строку?

1 Ответ

0 голосов
/ 31 января 2019

Вы можете использовать HttpUtility.HtmlEncode () для кодирования строки и возврата ее обратно в html с помощью HttpUtility.htmlDecode ()

string htmlString = System.Web.HttpUtility.HtmlEncode("<p>Some text</p>");
htmlString = System.Web.HttpUtility.HtmlDecode(htmlString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...