internal void Load(XElement xTable) { rows.Clear(); if (xTable == null) { throw new ArgumentNullException("xTable"); } if (xTable.Name.LocalName != Fb2TableElementName) { throw new ArgumentException("Element of wrong type passed", "xTable"); } IEnumerable<XElement> xRows = xTable.Elements(xTable.Name.Namespace + TableRowItem.Fb2TableRowElementName); foreach (var row in xRows) { TableRowItem rowItem = new TableRowItem(); try { rowItem.Load(row); Rows.Add(rowItem); } catch (Exception) { continue; } } Style = null; XAttribute xStyle = xTable.Attribute("style"); if ((xStyle != null) && (xStyle.Value != null)) { Style = xStyle.Value; } ID = null; XAttribute xID = xTable.Attribute("id"); if ((xID != null) && (xID.Value != null)) { ID = xID.Value; } }
internal void Load(XElement xTable) { rows.Clear(); if (xTable == null) { throw new ArgumentNullException("xTable"); } if (xTable.Name.LocalName != Fb2TableElementName) { throw new ArgumentException("Element of wrong type passed", "xTable"); } IEnumerable <XElement> xRows = xTable.Elements(xTable.Name.Namespace + TableRowItem.Fb2TableRowElementName); foreach (var row in xRows) { TableRowItem rowItem = new TableRowItem(); try { rowItem.Load(row); Rows.Add(rowItem); } catch (Exception) { continue; } } Style = null; XAttribute xStyle = xTable.Attribute("style"); if ((xStyle != null) && (xStyle.Value != null)) { Style = xStyle.Value; } ID = null; XAttribute xID = xTable.Attribute("id"); if ((xID != null) && (xID.Value != null)) { ID = xID.Value; } }
/// <summary> /// /// </summary> /// <param name="tableRowItem"></param> /// <param name="rowConverterParams"></param> /// <returns></returns> public IHTMLItem Convert(TableRowItem tableRowItem, RowConverterParamsV3 rowConverterParams) { if (tableRowItem == null) { throw new ArgumentNullException("tableRowItem"); } var tableRow = new TableRow(HTMLElementType.HTML5); foreach (var element in tableRowItem.Cells) { if (element is TableHeadingItem) { var th = element as TableHeadingItem; var cell = new TableHeaderCell(HTMLElementType.HTML5); var paragraphConverter = new ParagraphConverterV3(); var cellData = paragraphConverter.Convert(th, new ParagraphConverterParamsV3 { ResultType = ParagraphConvTargetEnumV3.Paragraph, Settings = rowConverterParams.Settings, StartSection = false }); if (cellData.SubElements() != null) { foreach (var subElement in cellData.SubElements()) { cell.Add(subElement); } } else { cell.Add(cellData); } //cell.Add(new SimpleHTML5Text { Text = th.Text }); if (th.ColSpan.HasValue) { cell.ColSpan.Value = th.ColSpan.ToString(); } if (th.RowSpan.HasValue) { cell.RowSpan.Value = th.RowSpan.ToString(); } switch (th.Align) { case TableAlignmentsEnum.Center: cell.Align.Value = "center"; break; case TableAlignmentsEnum.Left: cell.Align.Value = "left"; break; case TableAlignmentsEnum.Right: cell.Align.Value = "right"; break; } switch (th.VAlign) { case TableVAlignmentsEnum.Top: cell.VAlign.Value = "top"; break; case TableVAlignmentsEnum.Middle: cell.VAlign.Value = "middle"; break; case TableVAlignmentsEnum.Bottom: cell.VAlign.Value = "bottom"; break; } tableRow.Add(cell); } else if (element is TableCellItem) { var td = element as TableCellItem; var cell = new TableData(HTMLElementType.HTML5); var paragraphConverter = new ParagraphConverterV3(); var cellData = paragraphConverter.Convert(td, new ParagraphConverterParamsV3 { ResultType = ParagraphConvTargetEnumV3.Paragraph, Settings = rowConverterParams.Settings, StartSection = false }); if (cellData.SubElements() != null) { foreach (var subElement in cellData.SubElements()) { cell.Add(subElement); } } else { cell.Add(cellData); } //cell.Add(new SimpleHTML5Text { Text = td.Text }); if (td.ColSpan.HasValue) { cell.ColSpan.Value = td.ColSpan.ToString(); } if (td.RowSpan.HasValue) { cell.RowSpan.Value = td.RowSpan.ToString(); } switch (td.Align) { case TableAlignmentsEnum.Center: cell.Align.Value = "center"; break; case TableAlignmentsEnum.Left: cell.Align.Value = "left"; break; case TableAlignmentsEnum.Right: cell.Align.Value = "right"; break; } switch (td.VAlign) { case TableVAlignmentsEnum.Top: cell.VAlign.Value = "top"; break; case TableVAlignmentsEnum.Middle: cell.VAlign.Value = "middle"; break; case TableVAlignmentsEnum.Bottom: cell.VAlign.Value = "bottom"; break; } tableRow.Add(cell); } else { // invalid structure , we ignore Logger.Log.ErrorFormat("Invalid/unexpected table row sub element type : {0}", element.GetType()); //continue; } } tableRow.Align.Value = tableRowItem.Align ?? "left"; return tableRow; }