1

このアルゴリズムで書かれたXMLドキュメントがあります。

public XMLmethod(){
string[] nodes = { "node1", "node2", "node3" }; //etc etc

XmlTextWriter writer= new XmlTextWriter("file.xml", Encoding.UTF8);

writer.WriteStartDocument();
writer.WriteStartElement("root");

foreach (string node in nodes){
writer.WriteStartElement(s);
writer.WriteEndElement();
XMLmethod()}

writer.WriteEndElement();
writer.WriteEndDocument();
}

上記は簡略版です。ただし、xmlに出力する前に、いくつかのノードをフィルターで除外できるようにしたいです。

例えば:

<root>
 <node1>
  <node2> </node2>
  <node3> </node3>
 </node1>
<root>

フィルタリングしたいと言って <node1> </node1>

だからこのようになります

<root>
 <node2></node2>
 <node3></node3>
</root>

だからそれでも子供たちを印刷したいと思うでしょ<node2></node2><node3></node3>

次のようなifステートメントを使用することを考えました。

foreach (string node in nodes){
if(node == "node1"){}
else{
writer.WriteStartElement(node);
writer.WriteEndElement();
XMLmethod()}
}

これは正常に印刷されません<node1>/<node1>が、子ノードの印刷も停止します。どうすればこれを実行できるのでしょうか。

4

2 に答える 2

0

投稿したコードが機能する場合は、たとえば、繰り返す前にリストからアイテムを削除してみてください。

nodes.Remove("node1");

foreach (string node in nodes)
{
}

ただし、コードサンプルからは、なぜこれを実行するのかが明確ではありません。XMLドキュメントは、要素間の関係とセマンティックコンテキストを可能にするため、階層的にネストされます。親ノードを削除すると、作成しているXMLの使いやすさが低下する可能性があります。

たとえば、ドキュメントが

<People>
  <Person>
    <FirstName>Max</FirstName>
    <LastName>Smart</LastName>
  </Person>
</People>

<Person>タグを削除して、自分で出力FirstNameするLastNameだけでは意味がありません。

于 2012-10-01T01:39:16.190 に答える
0

以下の Foo などのクラスがあり、.Net XmlSerializerを使用してシリアル化するときに 1 つ以上のプロパティを省略したい場合は、 XmlIgnore属性を使用します。

public class Foo
{
    [XmlIngore]
    public string Node1 { get; set; }
    public string Node2 { get; set; }
    public string Node3 { get; set; }
}

これにより、XmlSerializer は と のみを出力<node2><node3>ます。

于 2012-10-01T01:29:11.883 に答える