직접적인 방법은 없지만 여전히 알 수 있습니다. XElement
요소를 XmlNode
으로 변환 할 수 있습니까? InnerText
및 InnerXml
과 같은 옵션은 XmlNode
입니다.XElement를 XmlNode로 변환
그래서 이러한 옵션을 사용하려면 XElement
을 XmlNode
개로 변환하고 그 반대로 변환하려면 어떻게해야합니까? Best way to get InnerXml of an XElement? 다음
직접적인 방법은 없지만 여전히 알 수 있습니다. XElement
요소를 XmlNode
으로 변환 할 수 있습니까? InnerText
및 InnerXml
과 같은 옵션은 XmlNode
입니다.XElement를 XmlNode로 변환
그래서 이러한 옵션을 사용하려면 XElement
을 XmlNode
개로 변환하고 그 반대로 변환하려면 어떻게해야합니까? Best way to get InnerXml of an XElement? 다음
가있는 XmlNode에 XElement를 위해 문자열로 변환하고 다시 XElement를하는 것입니다 참조 -
은 XElement를에서 InnerXml을 얻을 수있는 방법이 있습니다. XElement의 ToString()은 XmlNode의 OuterXml과 비슷합니다.
XElement xE = XElement.Parse("<Outer><Inner><Data /></Inner></Outer>");
XmlDocument xD = new XmlDocument();
xD.LoadXml(xE.ToString());
XmlNode xN = xD.FirstChild;
XElement xE2 = XElement.Parse(xN.OuterXml);
나는 다음과 같은 확장 방법을 사용하여, 그들은 매우 일반적인 것 같다 :
public static class MyExtensions
{
public static XElement ToXElement(this XmlNode node)
{
XDocument xDoc = new XDocument();
using (XmlWriter xmlWriter = xDoc.CreateWriter())
node.WriteTo(xmlWriter);
return xDoc.Root;
}
public static XmlNode ToXmlNode(this XElement element)
{
using (XmlReader xmlReader = element.CreateReader())
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);
return xmlDoc;
}
}
}
awesome :) 이것은 큰 도움이되었습니다. –
I 'ToXmlNode'가'xmlDoc.DocumentElement'를 리턴하여 예상했던 동작을 얻었습니다. 특히 'XElement'에는 주석이 있지만 'XmlNode'에는 주석이 없습니다. 그렇지 않으면 매우 도움이됩니다. – tallseth
'return xmlDoc;'은'return xmlDoc.FirstChild;'로 수정되어야합니다. –
BrokenGlass의 answer을 바탕으로, 당신은 사용하기보다, XmlDocument를에있는 XmlNode를 포함하고자하는 경우 :
public static class MyExtensions
{
public static XmlNode ToXmlNode(this XElement element, XmlDocument xmlDoc = null)
{
using (XmlReader xmlReader = element.CreateReader())
{
if(xmlDoc==null) xmlDoc = new XmlDocument();
return xmlDoc.ReadNode(xmlReader);
}
}
}
참고 : 예외를 throw하는 것보다 다른 문서에서 만든 노드를 문서에 삽입하려고하면 "노드를 삽입하는 데는 다른 문서가 사용됩니다 xt. "
내가 가장 짧은 방법은 다음과 생각 :
Dim xn as XmlNode = xdoc.ReadNode(xElem.CreateReader)
그게 전부!
또한 ImportNode를 사용할 수도 있습니다. https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.importnode(v=vs.110).aspx – seabass