私のXMLに問題があります。私は私のリストにxml linqは要素を削除できません
ではありませんが、そのここにdd
タグに
を働いていないすべてのタグを削除する必要が
は、XML入力
はこちらです私のリスト。このリストは
lstApprove.Add("Styles");
lstApprove.Add("alto");
lstApprove.Add("Description");
lstApprove.Add("MeasurementUnit");
lstApprove.Add("sourceImageInformation");
lstApprove.Add("fileName");
lstApprove.Add("OCRProcessing");
lstApprove.Add("preProcessingStep");
lstApprove.Add("processingSoftware");
lstApprove.Add("softwareCreator");
lstApprove.Add("softwareName");
lstApprove.Add("softwareVersion");
lstApprove.Add("ocrProcessingStep");
lstApprove.Add("ParagraphStyle");
lstApprove.Add("Layout");
lstApprove.Add("Page");
lstApprove.Add("PrintSpace");
lstApprove.Add("TextBlock");
lstApprove.Add("TextLine");
lstApprove.Add("String");
lstApprove.Add("SP");
lstApprove.Add("ComposedBlock");
lstApprove.Add("GraphicalElement");
、ここではリスト
using (StreamReader reader = new StreamReader(xmlFile))
{
nAlto = reader.ReadToEnd();
nAlto = nAlto.Replace("<document xmlns=\"http://www.scansoft.com/omnipage/xml/ssdoc-schema3.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">", "<document>");
nAlto = nAlto.Replace("<?xml version=\"1.0\" encoding=\"UTF-16\"?>", "");
}
XDocument doc = XDocument.Parse(nAlto);
foreach (var item in doc.Descendants().ToList())
{
if (!lstApprove.Contains(item.Name.ToString()))
{
if (item.HasElements)
{
item.ReplaceWith(item.Elements());
}
else
{
item.Remove();
}
}
}
、ここにないタグを除去するためのコードであるXMLで許可されているタグです出力
です
このhttp://pastebin.com/XjYBTWciは、XML出力の一部である
<dd l="2342.29" t="133.12" r="2427.71" b="209.17">
<TextBlock ID="P1_TB0000001" TAGREFS="LAYOUT_TAG_001" HPOS="2349.17" VPOS="160" WIDTH="71.66" HEIGHT="36.04" STYLEREFS="PAR_LEFT">
<TextLine ID="P1_TL0000001" HPOS="2362.92" VPOS="160" WIDTH="44.16" HEIGHT="36.04">
<String ID="P1_ST0000001" HPOS="2362.92" VPOS="160" WIDTH="44.16" HEIGHT="36.04" CONTENT="43" />
</TextLine>
</TextBlock>
</dd>
私のリストにない場合でも、私はまだdd
タグを持っています。どうして?ありがとうございました
であるこの機能を試してみてください、あなたが削除されている要素の親を格納し、その子の上に再帰的に反復処理する必要があります第一レベルの子孫である。あなたが必要とするのは再帰です。 –
あなたはそれを再帰的に行う方法を教えていただけますか? –
@HristoYankov ['Descendants()'](https://msdn.microsoft.com/en-us/library/bb360635(v=vs.110).aspx)は、最初のレベルだけでなく、すべての子孫要素を返します['Elements()']](https://msdn.microsoft.com/en-us/library/bb342765(v = vs.110).aspx))。 –