1

これは私のxmlです:

<application name="Test Tables">
<test>
  <xs:schema id="test" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">   
  </xs:schema> 
</test>
</application>

<application>ノードを削除せずにノードを削除するにはどうすればよい<test>ですか?

4

3 に答える 3

1

OK、おそらく私の最善の答えではありませんが、これがあなたのニーズに合っているか、良い出発点になることを願っています. まず、C# を使用していると仮定しています。したがって、私がこれを行った方法は、削除するノードを使用してその子ノードを選択し、それらを使用して新しい XDocument を作成することでした。これを実現するために Linq を使用するもっときちんとした方法があるかもしれませんが、私がそれを見ることができたら、私は気の毒です! とにかく、これが役立つことを願っています:

var doc = XDocument.Load(@".\Test1.xml");

var q = (from node in doc.Descendants("application")
        let attr = node.Attribute("name")
        where attr != null && attr.Value == "Test Tables"
        select node.DescendantNodes()).Single();

var doc2 =  XDocument.Parse(q.First().ToString());

私はこのSO投稿をガイドとして使用しました:C#を使用してXMLファイルからノードを削除する方法

ハッピーコーディング、
乾杯、
クリス。

于 2012-02-01T10:21:49.413 に答える
0

これがあります。

static void Main(string[] args)
    {
        string doc = @"
                    <application name=""Test Tables"">
                    <test>
                      <xs:schema id=""test"" xmlns="""" xmlns:xs=""http://www.w3.org/2001/XMLSchema""                         xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">   
                      </xs:schema> 
                    </test>
                    </application>
                    ";
        XDocument xDoc = XDocument.Parse(doc);
        Console.Write(xDoc.ToString());
        Console.ReadLine();

        string descendants = xDoc.Descendants("application").DescendantNodes().First().ToString();
        xDoc = XDocument.Parse(descendants);
        Console.Write(xDoc.ToString());
        Console.ReadLine();
    }

なぜあなたがこれをしたいのか、私は少し興味がありますが...

于 2012-02-01T10:20:51.457 に答える
0

XSLT を使用すると、次のことができます。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="application">
    <xsl:apply-templates select="test"/>
  </xsl:template>

  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
于 2012-02-01T09:49:27.703 に答える