나는 경우 다음과 같은 구조를 갖는 XML 파일 (예를 들어) :자식 노드 유지하는 XML 부모 노드를 제거
내가 예상 출력listChild
및
listChild2
을 제거 할
<Parent1>
<listChild>
<child>
<listchild2>
<child2>
<child2>
<child2>
</listchild2>
</child>
<child>
<listchild2>
<child2>
<child2>
<child2>
</listchild2>
</child>
</listchild>
</parent1>
:
<Parent>
<child>
<child>
<child>
<child>
</child>
<child>
<child>
<child>
<child>
</child>
</parent>
나는 다음과 같이 System.Xml.Linq
을 시도 :
public void removeParentNode(String filename)
{
XDocument xdoc = XDocument.Load(filename);
//remove parent1
var child= xdoc.Descendants("child");
XElement dcuManager = new XElement("parent1 ");
parent1 .Add(child);
XDocument xdoc1 = new XDocument(dcuManager);
}
그러나 코드는 외부 목록 만 제거합니다.
모든 자식 노드를 유지하면서 <listchild>
및 </listchild>
태그 만 제거 할 수 있습니까?
------------------------ 업데이트 --------------------- ---------------- XML 코드 위
예를 내 XML 코드는 매우 간단합니다 :
<?xml version="1.0" encoding="utf-8"?>
<DcuManager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<listDcu>
<Dcu id="dcu1 id" mode="dcu1 mode" port="dcu1 port">
<modemMgr>
<listModem>
<Modem id="Modem1 id" port="modem 1 port" communicationStatus="modem 1 mode">
<meterManager>
<listMeter>
<Meter id="Meter 1 id" port="Meter 1 port" mac="Meter 1 mode" />
</listMeter>
</meterManager>
</Modem>
<Modem id="Modem2 id" port="modem 2 port" communicationStatus="modem 2 mode">
<meterManager>
<listMeter>
<Meter id="Meter 2 id" port="Meter 2 port" mac="Meter 2 mode" />
</listMeter>
</meterManager>
</Modem>
</listModem>
</modemMgr>
</Dcu>
<Dcu id="dcu2 id" mode="dcu2 mode" port="dcu2 port">
<modemMgr>
<listModem>
<Modem id="Modem3 id" port="modem 3 port" communicationStatus="modem 3 mode">
<meterManager>
<listMeter>
<Meter id="Meter 3 id" port="Meter 3 port" mac="Meter 3 mode" />
</listMeter>
</meterManager>
</Modem>
<Modem id="Modem4 id" port="modem 4 port" communicationStatus="modem 4 mode">
<meterManager>
<listMeter>
<Meter id="Meter 4 id" port="Meter 4 port" mac="Meter 4 mode" />
</listMeter>
</meterManager>
</Modem>
</listModem>
</modemMgr>
</Dcu>
<Dcu id="dcu3 id" mode="dcu3 mode" port="dcu3 port">
<modemMgr>
<listModem>
<Modem id="Modem5 id" port="modem 5 port" communicationStatus="modem 5 mode">
<meterManager>
<listMeter>
<Meter id="Meter 5 id" port="Meter 5 port" mac="Meter 5 mode" />
</listMeter>
</meterManager>
</Modem>
<Modem id="Modem6 id" port="modem 6 port" communicationStatus="modem 6 mode">
<meterManager>
<listMeter>
<Meter id="Meter 6 id" port="Meter 6 port" mac="Meter 6 mode" />
</listMeter>
</meterManager>
</Modem>
</listModem>
</modemMgr>
</Dcu>
</listDcu>
</DcuManager>
이 코드는 XML로 C# 클래스를 변환 할 수 있습니다. dcuMgr, modemMgr, meterMgr 자식 노드를 지우고 싶습니다. 어떻게해야합니까?
대신'listchild'를 제거하면 코드가 잘 작동합니다 .. 코드를 업데이트 할 때 어떤 문제가 있는지 잘 모르겠습니다. –
개념적으로, 노드의 내용을 복사 한 다음 노드 자체를 삭제하고 부모 노드의 내용에 붙여 넣어야합니다. 이를 처리 할 수있는 함수를 만들 수 있습니까? – Khyron