0

以下のような xml ドキュメントの場合、現在選択されているフォルダーのすべてのサブフォルダーとファイルを表示します。そのために、xml 文字列から一致しないフォルダーを削除し、フロント エンドで XSLT を使用して UI を構築しました。結果の文字列を無効なxmlにするすべてのノードを削除しているようです。それで

  • ドキュメントの有効性を変更せずに、Linq to Xml を使用して xml から要素を削除するにはどうすればよいですか

XML ドキュメント

<?xml version="1.0" encoding="utf-8"?>
<Folder>
  <Folders>
    <Folder ID="1" Name="Root" ParentId="0">
      <Files></Files>
    </Folder>
    <Folder ID="2" Name="My Documents" ParentId="1">
      <Files>
        <File Name="LicenceCode.txt" Size="2000" CreatedOn="1/1/2012 12:12:00 PM" CreatedBy="1" ModifiedOn="1/10/2012 10:12:56 AM" ModifiedBy="2"></File>
      </Files>
    </Folder>
  </Folders>
</Folder>

コード

XElement filesAndFolders = XElement.Parse(xmlDocumentString);
string outputFolders = string.concat(from folders in filesAndFolders in filesAndFolder.Elements("Folder").Folder("Folders") where folders.Attribute("ParentId").Value.Equals(selectedFolderId) select folders);
//pass outputFolders string to xsl to build the UI

問題

outputFolders有効なドキュメントではない文字列の下にのみ含まれているため、文字列は無効です

<Folder ID="2" Name="My Documents" ParentId="1">
  <Files>
    <File Name="LicenceCode.txt" Size="2000" CreatedOn="1/1/2012 12:12:00 PM" CreatedBy="1" ModifiedOn="1/10/2012 10:12:56 AM" ModifiedBy="2"></File>
  </Files>
</Folder>
4

1 に答える 1

1

不要な要素を削除するのはどうですか:

        var doc = XDocument.Parse(xmlString);

        doc.Element("Folder").Element("Folders").Elements("Folder").Where(f => f.Attribute("ID").Value == "1").Remove();
于 2012-06-22T09:57:42.600 に答える