Модификация XElement, как мне отредактировать атрибуты? - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть xelement, который является базовым html, я хочу быстро пройтись по всем элементам, которые являются тегами абзаца, и установить атрибут style или добавить его.Я делаю то, что ниже, но это не меняет мастер xelement.Как я могу сделать эту работу?

    XElement ele = XElement.Parse(body);
    foreach (XElement pot in ele.DescendantsAndSelf("p"))
    {
        if (pot.Attribute("style") != null)
        {
            pot.SetAttributeValue("style", pot.Attribute("style").Value + " margin: 0px;");
        }
        else
        {
            pot.SetAttributeValue("style", "margin: 0px;");
        }
    }

1 Ответ

5 голосов
/ 09 февраля 2012

Просто используйте свойство Value - вы можете получить и установить для него значение атрибута. Только добавление атрибута немного больше работы - вы используете метод Add() и передаете экземпляр XAttribute:

if (pot.Attribute("style") != null)
{
    pot.Attribute("style").Value = pot.Attribute("style").Value + " margin: 0px;";
}
else 
{
    pot.Add(new XAttribute("style", "margin: 0px;"));
}

Похоже, что вы на самом деле редактируете HTML (хотя я могу ошибаться) - в этом случае имейте в виду, что большинство HTML, которые прекрасно работают в браузере, не допустимо XML - вы должны использовать парсер для HTML в этом случае, например HtmlAgilityPack , который сделает эту работу намного лучше.

...