0

XML ファイルがあり、この XML が文字列として渡される関数があります。この文字列を Xmldocument にロードしましたが、1 つのノードの下にいくつかの子ノードを挿入する必要があります。この関数は、変更された XML 文字列を返します。この関数が呼び出されるたびに、新しい子ノードが追加されるようにしたいのですが、現在、子ノードは 1 回追加されます。

XML ファイルを上書きする必要がありますか? その場合、関数が再度呼び出される前に子ノードが追加されるように、ノードを新しいノード (新しい子ノードが追加された状態) に置き換えるにはどうすればよいですか?

私のコードは次のようになります。

Dim doc As New XmlDocument
doc.LoadXml(applicationXml)
Dim parentNode As XmlNode = doc.GetElementsByTagName("prList").Item(0)

Dim newElement As XmlNode = doc.CreateNode(XmlNodeType.Element, "gate.util.persistence.LanguageAnalyserPersistence", Nothing)

Dim runtimeParamsElement As XmlNode = doc.CreateNode(XmlNodeType.Element, "runtimeParams", Nothing)
Dim xa As XmlAttribute = doc.CreateAttribute("class")
xa.Value = "gate.util.persistence.MapPersistence"
runtimeParamsElement.Attributes.Append(xa)

localMapElement = doc.CreateNode(XmlNodeType.Element, "localMap", Nothing)
featuresElement.AppendChild(localMapElement)

newElement.AppendChild(featuresElement)

Return doc.InnerXml
4

1 に答える 1

0

正確な問題を特定するのに十分なコードが表示されていません。どのノードを交換しようとしていますか? featuresElement はどこから来たのですか? ここにいくつかの答えがあります:

  1. はい、新しいドキュメントを使用してファイル全体を置き換える必要があります。
  2. ノードを新しいノードに置き換える必要はありません。ターゲット ノードを関数に渡すだけです。この関数は、親ノードで appendChild() を呼び出して子を追加する必要があります。
  3. たとえば、ドキュメントをファイルに書き込むと、新しいノードが作成されます。
于 2012-05-12T08:14:06.060 に答える