public OdfContentXmlDocument ReadMainContentXml() { using (var s = this.OpenEntryToRead(MainContentEntryPath)) { var doc = new OdfContentXmlDocument(s); return doc; } }
private static IEnumerable <XmlElement> FindAllRowElements(OdfContentXmlDocument xml) { var nodeList = xml.GetElementsByTagName(OdfDocument.TableRowElement); foreach (XmlElement rowEle in nodeList) { yield return(rowEle); } }
private static void ProcessTableRows(OdfContentXmlDocument xml) { var rowElements = FindAllRowElements(xml).ToArray(); foreach (XmlElement row in rowElements) { //检测一个行中的 table-cell 是否只包含唯一的 report-directive 元素 //把其中的 cell 都去掉 ProcessSingleTableRowElement(row); } }
private static IEnumerable <XmlElement> MatchHrefPlaceholderElements(OdfContentXmlDocument xml) { var textAnchors = xml.GetElementsByTagName(OdfDocument.TextAnchorElement); foreach (XmlElement ta in textAnchors) { var href = ta.GetAttribute("xlink:href"); if (href != null && href.Trim(' ', '/').StartsWith(WellknownConstants.DtlProtocolPrefix)) { yield return(ta); } } }
private static IEnumerable <XmlElement> FindAllPlaceholderElements(OdfContentXmlDocument xml) { var textPlaceholders = xml.GetElementsByTagName(OdfDocument.TextPlaceholderElement); foreach (XmlElement tpe in textPlaceholders) { yield return(tpe); } foreach (XmlElement ele in MatchHrefPlaceholderElements(xml)) { yield return(ele); } }
private static void ProcessIdentifierTag(OdfContentXmlDocument xml, XmlNode placeholder, string value) { Debug.Assert(xml != null); Debug.Assert(placeholder != null); Debug.Assert(!string.IsNullOrEmpty(value)); var ie = new ReferenceElement(xml, value); if (placeholder.Name == OdfDocument.TextPlaceholderElement) { ProcessPlaceHolderElement(placeholder, ie); } else { placeholder.ParentNode.ReplaceChild(ie, placeholder); } }
private static void PreprocessElements(OdfContentXmlDocument xml) { var placeholders = FindAllPlaceholderElements(xml).ToArray(); foreach (XmlNode placeholder in placeholders) { string value = ExtractTemplateExpression(placeholder); if (value.StartsWith(WellknownConstants.DtlReferenceChar)) { ProcessIdentifierTag(xml, placeholder, value.Substring(1)); } else if (value.StartsWith(WellknownConstants.DtlDirectiveChar)) { var directiveNode = new DirectiveElement(xml, value.Substring(1)); directiveNode.ReduceTagByCount(placeholder); } else { throw new SyntaxErrorException($"Syntax error: '{value}'"); } } var drawFrameElements = xml.SelectNodes("//" + OdfDocument.DrawFrameElement, xml.NamespaceManager); var dtlDrawFrames = new List <XmlNode>(); foreach (XmlNode node in drawFrameElements) { var nameAttr = node.Attributes["draw:name"]; if (nameAttr != null && !string.IsNullOrWhiteSpace(nameAttr.Value) && nameAttr.Value.Trim(' ').StartsWith(WellknownConstants.DtlReferenceChar)) { dtlDrawFrames.Add(node); } } foreach (var node in dtlDrawFrames) { ProcessDrawFrameElement(node, xml.NamespaceManager); } }
public void WriteMainContentXml(OdfContentXmlDocument xml) => this.WriteXmlEntry(this.MainContentEntryPath, xml);