長いファイルを解析して、不要なセクションを削除しようとしています。調査によると、OpenXml SDK は、doc という単語を操作および検索するための最も簡単なリファレンスであったようです。残念ながら、NullReferenceExceptions
実行オブジェクトなどのノードを割り当てようとすると取得し続けるため、常に一貫しているわけではありません。基本的に、私のプログラムは docx ファイルを調べてタグ (ver 1) を見つけ、そのタグと終了タグ (/ver 1) の間のすべてを削除する必要があります。これは、他のセクションと同様に一部のセクションでのみ機能するようNullReferenceException
で、MS Word が使用する乱雑な書式設定と関係があると感じていますが、わかりません。
誰かが私が感謝するのを助けることができるなら、これは特定のセクションのコードです。
IEnumerable<OpenXmlElement> elem = main.Document.Body.Descendants().ToList();
foreach (OpenXmlElement elems in elem)
{
if (elems is Text && elems.InnerText == s_Ver1)// s_Ver1 = "(Ver 1)"
{
Run run = (Run)elems.Parent;
Paragraph p = (Paragraph)run.Parent;
p.RemoveAllChildren();
p.Remove();
foreach (OpenXmlElement endelems in elem)
{
if (endelems is Text && elems.InnerText == e_Ver1)//e_Ver1 = "(/Ver1)"
{
run = (Run)endelems.Parent;
p = (Paragraph)run.Parent;
p.Remove();
break;
}
else
{
Run d_Run = (Run)endelems.Parent;
Paragraph d_p = (Paragraph)d_Run.Parent;
d_p.RemoveAllChildren();
d_p.Remove();*/
try
{
endelems.Remove();
}
catch(Exception err)
{
MessageBox.Show(err.ToString());
}
}
}
}
}
編集
コード内でキャッチしてみてください( endelems.remove() の周り)
System.InvalidOperationException: The Parent of this element is Null
//it also says line 141 but I'm not sure how to get line numbering in vs2010
全体でエラーをキャッチしてみてください
System.NullReferenceException: Object reference not set to an instance of an object
//line 114 which would be Paragraph p = (Paragraph)run.Parent; line