本文整理汇总了C#中HtmlRenderer.Dom.CssBox.GetAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# CssBox.GetAttribute方法的具体用法?C# CssBox.GetAttribute怎么用?C# CssBox.GetAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HtmlRenderer.Dom.CssBox
的用法示例。
在下文中一共展示了CssBox.GetAttribute方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CssSpacingBox
public CssSpacingBox(CssBox tableBox, ref CssBox extendedBox, int startRow)
: base(tableBox, new HtmlTag("none",new Dictionary<string, string>{{"colspan","1"}} ))
{
_extendedBox = extendedBox;
Display = CssConstants.None;
_startRow = startRow;
_endRow = startRow + Int32.Parse(extendedBox.GetAttribute("rowspan", "1")) - 1;
}
示例2: CascadeStyles
/// <summary>
/// Applies style to all boxes in the tree.<br/>
/// If the html tag has style defined for each apply that style to the css box of the tag.<br/>
/// If the html tag has "class" attribute and the class name has style defined apply that style on the tag css box.<br/>
/// If the html tag has "style" attribute parse it and apply the parsed style on the tag css box.<br/>
/// If the html tag is "style" tag parse it content and add to the css data for all future tags parsing.<br/>
/// If the html tag is "link" that point to style data parse it content and add to the css data for all future tags parsing.<br/>
/// </summary>
/// <param name="box"></param>
/// <param name="bridge"> </param>
/// <param name="cssData"> </param>
/// <param name="cssDataChanged">check if the css data has been modified by the handled html not to change the base css data</param>
private static void CascadeStyles(CssBox box, object bridge, ref CssData cssData, ref bool cssDataChanged)
{
box.InheritStyle();
if (box.HtmlTag != null)
{
// try assign style using the html element tag
AssignCssBlocks(box, cssData, box.HtmlTag.Name);
// try assign style using the "class" attribute of the html element
if (box.HtmlTag.HasAttribute("class"))
{
AssignCssBlocks(box, cssData, "." + box.HtmlTag.Attributes["class"]);
AssignCssBlocks(box, cssData, box.HtmlTag.Name + "." + box.HtmlTag.Attributes["class"]);
}
// try assign style using the "id" attribute of the html element
if (box.HtmlTag.HasAttribute("id"))
{
AssignCssBlocks(box, cssData, "#" + box.HtmlTag.Attributes["id"]);
}
HtmlParser.TranslateAttributes(box.HtmlTag, box);
// Check for the style="" attribute
if (box.HtmlTag.HasAttribute("style"))
{
var block = CssParser.ParseCssBlockImp(box.HtmlTag.Name, box.HtmlTag.Attributes["style"]);
AssignCssBlock(box, block);
}
// Check for the <style> tag
if (box.HtmlTag.Name.Equals("style", StringComparison.CurrentCultureIgnoreCase) && box.Boxes.Count == 1)
{
CloneCssData(ref cssData, ref cssDataChanged);
CssParser.ParseStyleSheet(cssData, box.Boxes[0].Text);
}
// Check for the <link rel=stylesheet> tag
if (box.HtmlTag.Name.Equals("link", StringComparison.CurrentCultureIgnoreCase) &&
box.GetAttribute("rel", string.Empty).Equals("stylesheet", StringComparison.CurrentCultureIgnoreCase))
{
CloneCssData(ref cssData, ref cssDataChanged);
var styleSheet = CssValueParser.GetStyleSheet(box.GetAttribute("href", string.Empty), bridge);
CssParser.ParseStyleSheet(cssData, styleSheet);
}
}
foreach (var childBox in box.Boxes)
{
CascadeStyles(childBox, bridge, ref cssData, ref cssDataChanged);
}
}
示例3: GetSpan
/// <summary>
/// Gets the span attribute of the tag of the specified box
/// </summary>
/// <param name="b"></param>
private int GetSpan(CssBox b)
{
float f = CssValueParser.ParseNumber(b.GetAttribute("span"), 1);
return Math.Max(1, Convert.ToInt32(f));
}
示例4: GetRowSpan
/// <summary>
/// Gets the rowspan of the specified box
/// </summary>
/// <param name="b"></param>
private int GetRowSpan(CssBox b)
{
string att = b.GetAttribute("rowspan", "1");
int rowspan;
if (!int.TryParse(att, out rowspan))
{
return 1;
}
return rowspan;
}
示例5: GetColSpan
/// <summary>
/// Gets the colspan of the specified box
/// </summary>
/// <param name="b"></param>
private int GetColSpan(CssBox b)
{
string att = b.GetAttribute("colspan", "1");
int colspan;
if (!int.TryParse(att, out colspan))
{
return 1;
}
return colspan;
}
示例6: GetAttribute
/// <summary>
/// Get attribute value by given key starting search from given box, search up the tree until
/// attribute found or root.
/// </summary>
/// <param name="box">the box to start lookup at</param>
/// <param name="attribute">the attribute to get</param>
/// <returns>the value of the attribute or null if not found</returns>
public static string GetAttribute(CssBox box, string attribute)
{
string value = null;
while( box != null && value == null )
{
value = box.GetAttribute(attribute, null);
box = box.ParentBox;
}
return value;
}
示例7: CascadeStyles
/// <summary>
/// Applies style to all boxes in the tree.<br/>
/// If the html tag has style defined for each apply that style to the css box of the tag.<br/>
/// If the html tag has "class" attribute and the class name has style defined apply that style on the tag css box.<br/>
/// If the html tag has "style" attribute parse it and apply the parsed style on the tag css box.<br/>
/// If the html tag is "style" tag parse it content and add to the css data for all future tags parsing.<br/>
/// If the html tag is "link" that point to style data parse it content and add to the css data for all future tags parsing.<br/>
/// </summary>
/// <param name="box"></param>
/// <param name="htmlContainer">the html container to use for reference resolve</param>
/// <param name="cssData"> </param>
/// <param name="cssDataChanged">check if the css data has been modified by the handled html not to change the base css data</param>
private static void CascadeStyles(CssBox box, HtmlContainer htmlContainer, ref CssData cssData, ref bool cssDataChanged)
{
box.InheritStyle();
if (box.HtmlTag != null)
{
// try assign style using the html element tag
AssignCssBlocks(box, cssData, box.HtmlTag.Name);
// try assign style using the "class" attribute of the html element
if (box.HtmlTag.HasAttribute("class"))
{
AssignClassCssBlocks(box, cssData);
}
// try assign style using the "id" attribute of the html element
if (box.HtmlTag.HasAttribute("id"))
{
var id = box.HtmlTag.TryGetAttribute("id");
AssignCssBlocks(box, cssData, "#" + id);
}
TranslateAttributes(box.HtmlTag, box);
// Check for the style="" attribute
if (box.HtmlTag.HasAttribute("style"))
{
var block = CssParser.ParseCssBlock(box.HtmlTag.Name, box.HtmlTag.TryGetAttribute("style"));
AssignCssBlock(box, block);
}
// Check for the <style> tag
if (box.HtmlTag.Name.Equals("style", StringComparison.CurrentCultureIgnoreCase) && box.Boxes.Count == 1)
{
CloneCssData(ref cssData, ref cssDataChanged);
CssParser.ParseStyleSheet(cssData, box.Boxes[0].Text.CutSubstring());
}
// Check for the <link rel=stylesheet> tag
if (box.HtmlTag.Name.Equals("link", StringComparison.CurrentCultureIgnoreCase) &&
box.GetAttribute("rel", string.Empty).Equals("stylesheet", StringComparison.CurrentCultureIgnoreCase))
{
CloneCssData(ref cssData, ref cssDataChanged);
var styleSheet = StylesheetLoadHelper.LoadStylesheet(htmlContainer, box.GetAttribute("href", string.Empty), box.HtmlTag.Attributes);
CssParser.ParseStyleSheet(cssData, styleSheet);
}
}
// cascade text decoration only to boxes that actually have text so it will be handled correctly.
if (box.TextDecoration != String.Empty && box.Text == null)
{
foreach (var childBox in box.Boxes)
childBox.TextDecoration = box.TextDecoration;
box.TextDecoration = string.Empty;
}
foreach (var childBox in box.Boxes)
{
CascadeStyles(childBox, htmlContainer, ref cssData, ref cssDataChanged);
}
}