ノードをXML文書に追加してから削除しようとしています。 ノードの追加は機能していますが、プログラムを再起動しない限りノードを削除できません。私のXMLドキュメントは、次のようになりますC#/ Unity3Dを使用してXML文書を作成してから削除する
public void removeBuildingNode (string fileNamePath, int buildingPosX, int buildingPosY)
{
XmlDocument doc = new XmlDocument();
doc.Load (fileNamePath);
XmlNodeList nodes = doc.SelectNodes ("//BUILDING[@x='" + buildingPosX + "']");
for (int i = nodes.Count - 1; i >= 0; i--) {
Debug.Log("" + i);
nodes[i].ParentNode.RemoveChild (nodes[i]);
}
doc.Save(fileNamePath);
Debug.Log(""+buildingPosX + ", " + buildingPosY);
}
:
Writeメソッド:
public void writeToExistingDoc (String fileNamePath, int x, int y, int t)
{
string filename = fileNamePath;
string xPos = "" + x;
string yPos = "" + y;
string type = "" + t;
//create new instance of XmlDocument
XmlDocument doc = new XmlDocument();
//load from file
doc.Load (filename);
//create node and add value
XmlNode node = doc.CreateNode (XmlNodeType.Element, "BUILDING", null);
XmlAttribute atr = doc.CreateAttribute ("x");
XmlAttribute atr2 = doc.CreateAttribute ("y");
XmlAttribute atr3 = doc.CreateAttribute ("type");
atr.Value = xPos;
atr2.Value = yPos;
atr3.Value = type;
node.Attributes.Append (atr);
node.Attributes.Append (atr2);
node.Attributes.Append (atr3);
//add to elements collection
doc.DocumentElement.AppendChild (node);
Debug.Log ("Element added");
//save back
doc.Save (filename);
}
、ここでは、Removeメソッドである私が言ったように
<BUILDINGS ID="b">
<BUILDING x="50" y="80" type="1" />
<BUILDING x="25" y="125" type="1" />
<BUILDING x="35" y="125" type="1" />
<BUILDING x="45" y="125" type="1" />
</BUILDINGS>
、メソッドは、最初にプログラムを実行し、writeメソッドを使用し、プログラムを再起動してremoveメソッドを使用するときに機能します。実行中の同じインスタンスでは動作しません。使用あなたがXmlDocumentオブジェクトを使用して上の曲がっていない場合、これは動作するはず
ところで、イムは今だけのためのx座標を使用。 – Hassel
何がうまくいかない?あなたのコードとテスト文書を使用して追加し、その後同じノードを削除した場合、それは私のために働きます。 .Where()メソッドと "from"キーワードを使用するのに問題がある –