Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML解析-删除节点并保留整体结构_C#_Xml_Xmlnode_Xmlnodelist - Fatal编程技术网

C# XML解析-删除节点并保留整体结构

C# XML解析-删除节点并保留整体结构,c#,xml,xmlnode,xmlnodelist,C#,Xml,Xmlnode,Xmlnodelist,因此,我有一个庞大的XML文件,其中包含一个类似于此的结构: <Item ItemId=";ResTVersion" ItemType="0" PsrId="245" Leaf="false"> <Disp Icon="Str" Expand="true" Disp="true" LocTbl="false" Order="13352" /> <Modified By="sachink" DateTime="2008-12-16T19:02:35Z"

因此,我有一个庞大的XML文件,其中包含一个类似于此的结构:

<Item ItemId=";ResTVersion" ItemType="0" PsrId="245" Leaf="false">
    <Disp Icon="Str" Expand="true" Disp="true" LocTbl="false" Order="13352" />
    <Modified By="sachink" DateTime="2008-12-16T19:02:35Z" />
    <PsrProps>
      <Str Name="Kii" Val="yyyyyyyyyyyyy" />
    </PsrProps>
    <Item ItemId=";ResTFileVersion" ItemType="0;ResT" PsrId="245" InstFlg="true" Leaf="true">
      <Str Cat="Text" UsrLk="true">
        <Val><![CDATA[ttttttttt]]></Val>
        <Tgt Cat="Text" Orig="New">
          <Val><![CDATA[ttttttttt]]></Val>
        </Tgt>
      </Str>
      <Disp Icon="Str" Order="13353" />
      <Modified By="sachink" DateTime="2008-12-16T19:02:35Z" />
      <Cmts>
        <Cmt Name="Dev"><![CDATA[{Locked}]]></Cmt>
      </Cmts>
    </Item>
    <Item ItemId=";ResTLanguageTag" ItemType="0;ResT" PsrId="245" InstFlg="true" Leaf="true">
      <Str Cat="Text" UsrLk="true">
        <Val><![CDATA[en-US]]></Val>
        <Tgt Cat="Text" Orig="New">
          <Val><![CDATA[en-US]]></Val>
        </Tgt>
      </Str>
      <Disp Icon="Str" Order="13354" />
      <Modified By="sachink" DateTime="2008-12-16T19:02:35Z" />
      <Cmts>
        <Cmt Name="Dev"><![CDATA[=.ABVUDHUIDSHFUIDSHFUISHDFUIDSH iusdhfUIHAs]]></Cmt>
      </Cmts>
    </Item>
  </Item>
所以我想要删除一些节点,但是我只有我想要保留的节点的ID。 问题是,在使用selectnodes函数获取内部节点时,如何保持xml的外部结构


谢谢

我会走相反的路:去掉你不需要的东西。从头开始构建XmlDocument很难,这需要大量的编码。

我认为最好从现有的结构中删除不需要的节点

XmlNodeList nodes = originalXML.SelectNodes("/*[not(contains(@test,'test'))]")
foreach(XmlNode node in nodes)
  originalXML.RemoveChild(node);
应该有用

如果需要保留原始结构,可以使用originalXML.Clone


旁注:您可能希望查看System.Xml.Linq.XDocument和System.Xml.Linq.XElement,我发现它们更易于使用。

为什么不使用一个没有项目的Xml模板,并根据需要在文档中动态添加项目?这有意义吗?
XmlNodeList nodes = originalXML.SelectNodes("/*[not(contains(@test,'test'))]")
foreach(XmlNode node in nodes)
  originalXML.RemoveChild(node);