0
<sg>
       <userdata>
            <data>
             <tag name="gf" description="fg" nodeid="                                                      {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"    numkey="" interpolator="" frame="" aindex="1" number="1">
              <![CDATA[  //sg/objects/object[@id="          {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
               ]]> 
               </tag>
              <tag name="gf" description="fg" nodeid="               {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"                       numkey="" interpolator="" frame="" aindex="1" number="2">
               <![CDATA[  //sg/objects/object[@id="                         {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
              ]]> 
              </tag>
                </data>
               </userdata>
                    </sg>

「タグ」を削除したい-これを行う方法

私はこのように作りました

updatedData.SelectSingleNode("//tag[@name='" + 1 + "']").RemoveAll(); 

しかし、それでもタグはこれに含まれます..私は空のタグを意味します..それを削除する方法

その後

                   <sg>
                    <userdata>
                      <data>
                      <tag /> --- This is wat i want to remove... how to remove this
                       <tag name="gf" description="fg" nodeid="        {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"      numkey="" interpolator="" frame="" aindex="1" number="2">
                      <![CDATA[  //sg/objects/object[@id="           {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
                    ]]> 
                     </tag>
                      </data>

4

4 に答える 4

1
XmlNodeList nodes = updatedData.GetElementsByTagName("tagname");
foreach (XmlNode node in nodes)
{
    if (node.ChildNodes.Count == 0)
        node.RemoveAll();
    else
        UpdateDoc.InnerXml = node.OuterXml;
}

私はこれを解決しました...

于 2012-11-20T09:38:45.463 に答える
0

これは、xdocument を XmlNodeList にロードする方法です。

 XDocument doc = XDocument.Load(@"C:\Users\sghaida\Documents\Visual Studio 2008\Projects\testing-ws-1\XMLParser\config.xml");
                XmlDocument xmlDoc = new XmlDocument();
                XmlNodeReader nodeReader = (XmlNodeReader)doc.CreateReader();
                xmlDoc.ReadNode(nodeReader);
                XmlNodeList xmlnodeList = xmlDoc.SelectNodes("node");
于 2012-11-16T12:11:38.293 に答える
0
var xmlDoc = XDocument.Load("filename.xml");
var element = (
    from x in xmlDoc.Root.Elements("elemnt-name")
    where x.Element("tage-name").Value == "xxxx"
    select x
    ).FirstOrDefault();
element.Remove();
xmlDoc .Save("filename.xml");
于 2012-11-16T11:39:05.623 に答える
0

あなたのXPathは奇妙です:

"//tag[@name='" + 1 + "']"

値が1の属性を持つすべてのtag要素が選択nameされます。例には何もありません。

SelectSingleNodeまた、単一のノードのみを選択する whichも使用しています。

"//tag"それらをすべて選択したい場合はXPathを使用する必要があり、SelectNodes代わりに使用する必要があります。

于 2012-11-16T11:40:14.407 に答える