从XML文件中获取元素

从XML文件中获取元素

问题描述:

我有这样的问题:从XML文件中获取元素

我有一个方法

private XmlElement ToXmlElement(string xml) 
     { 
      XmlDocument doc = new XmlDocument(); 
      doc.LoadXml(xml); 
      return doc.DocumentElement; 
     } 

而且我输入XML字符串:

<?xml version="1.0"?> 
<Collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:IEEE-1671:2009.02:Common"> 
<Item name="edsw"> 
<Collection /> 
</Item> 
</Collection> 

我需要从这个字符串的XmlElement返回,看起来像:

<Collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:IEEE-1671:2009.02:Common"> 
    <Item name="edsw"> 
    <Collection /> 
    </Item> 
    </Collection> 

那一切都没有<?xml version ="1.0"?> 但doc.DocumentElements只返回我:

<Item name="edsw" xmlns="urn:IEEE-1671:2009.02:Common"> 
<Collection /> 
</Item> 

有什么办法如何实现的呢?

+0

这不会发生在我身上。 'DocumentElement'返回整个'Collection'。你如何将结果转换为字符串? – svick

+0

当我调试它时,我看到DocumentElement内部xml只有这个,不是整个集合, –

+0

字符串ToStringElement(XmlElement xml){StringWriter sw = new StringWriter(); XmlTextWriter writter = new XmlTextWritter(sw); xml.WriteTo(writter); return sw.toString(); } –

看那OuterXml,这就是你会发现你所需要的:

doc.DocumentElement.OuterXml 
+0

但那只是字符串,我需要返回XmlElement –

+1

@Martin Ch,以及你已经拥有它:'doc.DocumentElement',这就是你正在返回。当你在调试时看看'OuterXml'属性而不是'InnerXml'。 –