こんにちはInsertAfterを使用することができません私は私の出力をしたいC#でのXmlDocumentについては、以下の
<?xml version="1.0" encoding="utf-16"?>
<Verify>
<ver>
<ECU>
<values>
</values>
</ECU>
</ver>
</Verify>
以下のようにマスターXML
<?xml version="1.0" encoding="utf-16"?>
<Verify>
<ver>
<ECU>
<values>
</values>
</ECU>
</ver>
</Verify>
あるXMLファイルは、私が同じ構造である複数のファイルを持っています
<?xml version="1.0" encoding="utf-16"?>
<Verify>
<ver>
<ECU>
<values>
</values>
</ECU>
<ECU>
<values>
</values>
</ECU>
<ECU>
<values>
</values>
</ECU>
</ver>
</Verify>
ように私は、マスターXML あちこち他のファイルとして最初のものを読むためのコードの下に使用していますm xmlsフォルダ。マスターファイルのECUノードの下にこれらのファイルからECUノードを追加します。
XmlDocument xmlMaster = new XmlDocument();
xmlMaster.Load(@"C:\MasterXMLFile.xml");
XmlElement masterRoot = xmlMaster.DocumentElement;
XmlNode masterParent = masterRoot.LastChild.LastChild;
var downloadfolder = @"C:\AllXMLs\xmls\";
string[] files = Directory.GetFiles(downloadfolder);
foreach (var xx in files)
{
XmlNode masterNode = masterRoot.LastChild.LastChild;
XmlDocument xdoc = new XmlDocument();
xdoc.Load(xx);
XmlElement root = xdoc.DocumentElement;
XmlElement tempNode = (XmlElement)root.LastChild.LastChild;
masterRoot.InsertAfter(tempNode, masterRoot.SelectSingleNode("//ECU").ParentNode);
}
xmlMaster.Save(@"C:\mergeg.xml");
オブジェクト参照がオブジェクトのインスタンスに設定されていないため、InsertAfterステートメントでエラーが発生します。
私には何か解決策を提案してください。
要素ノードを選択するために 'LastChild'が期待されません。テキストノードにすることができます。ですから、XPathと 'SelectSingleNode'でコピーしたい要素を選択するだけです。そしてある文書から別の文書にノードをコピーする場合は、必ず 'ImportNode'を使用してください。 –