Bu biraz zor. Ben geri <SubObject>
çocuklarının her ondan kurtulmak için bütün istediğim boş elemanlar olduğundan buTüm boş XElements'lar nasıl kaldırılır
<Object>
<Property1>1</Property1>
<Property2>2</Property2>
</Object>
almak istiyorum
<Object>
<Property1>1</Property1>
<Property2>2</Property2>
<SubObject>
<DeeplyNestedObject />
</SubObject>
</Object>
bu XmlDocument olduğunu düşünelim. Bunu zorlaştıran şey, düğümleri üzerinde yinelediğiniz sırada kaldıramayacağınızdır. Herhangi bir yardım çok takdir edilecektir.
UPDATE İşte ben neyle sarıldım. Herkes bunun için kullanılması durumunda ilgilenen varsa
public XDocument Process()
{
//Load my XDocument
var xmlDoc = GetObjectXml(_source);
//Keep track of empty elements
var childrenToDelete = new List<XElement>();
//Recursively iterate through each child node
foreach (var node in xmlDoc.Root.Elements())
Process(node, childrenToDelete);
//An items marked for deletion can safely be removed here
//Since we're not iterating over the source elements collection
foreach (var deletion in childrenToDelete)
deletion.Remove();
return xmlDoc;
}
private void Process(XElement node, List<XElement> elementsToDelete)
{
//Walk the child elements
if (node.HasElements)
{
//This is the collection of child elements to be deleted
//for this particular node
var childrenToDelete = new List<XElement>();
//Recursively iterate each child
foreach (var child in node.Elements())
Process(child, childrenToDelete);
//Delete all children that were marked as empty
foreach (var deletion in childrenToDelete)
deletion.Remove();
//Since we just removed all this nodes empty children
//delete it if there's nothing left
if (node.IsEmpty)
elementsToDelete.Add(node);
}
//The current leaf node is empty so mark it for deletion
else if (node.IsEmpty)
elementsToDelete.Add(node);
}
ben araya bir ObjectFilter projesi için.
Yapılandırma dosyasını okumak için System.Xml dosyasını kullanın –
@sarooptrivedi: Soruyu okuyun. – SLaks
@SLaks: Projeme aynı şeyleri uyguluyorum. XMLDOcument dosyasını okuyabilir ve ardından dosyayı güncelleyebilir ve son –