私はXMLとXSDを持っています。XSDに対して検証されないXMLを削除します
問題は、アップロード中に1つの要素\属性が失敗した場合、何もアップロードされないということです。したがって、XSDを使用して、アップロード前に無効な「行」を取り除きたいと思います。
以下は、例えば、上記の例では
<Row>
<Column1>1</Column1>
<Column2>2</Column2>
</Row>
<Row>
<Column1>1</Column1>
<Column2>2</Column2>
</Row>
<Row>
<Column1>1</Column1>
**<Column2>**B**</Column2>**
</Row>
<Row>
<Column1>1</Column1>
**<Column2>**C**</Column2>**
</Row>
とした場合、3行目に列2および4行目は無効です。したがって、私はXMLから両方を削除したいと思います。
私は
foreach (XmlElement row in doc.SelectNodes("TableName/Row"))
{
if (row.SchemaInfo.Validity == XmlSchemaValidity.Invalid)
{
row.ParentNode.RemoveChild(row);
}
}
を試してみましたが、私はこれを行うための唯一の方法だと思い、それが唯一の最初のエラー・セクションを削除し、以降のエラーを持つセクションがある場合SchemaInfo.Validity値が「NotKnown」