【问题标题】:Get entire node XML rather than InnerXml获取整个节点 XML 而不是 InnerXml
【发布时间】:2014-05-02 03:53:27
【问题描述】:

给定以下 XML:

<Root>
  <Item id="1">
    <name>Foo</name>
    <status>Active</status>
  </Item>
  <Item id="2">
    <name>Bar</name>
    <status>Inactive</status>
  </Item>
</Root>

假设我在 XmlDocument 对象中有这个 XML,然后有以下代码:

var nodes = xmlDocumentObject.GetElementsByTagName("Item");
foreach (var node in nodes)
{
   var nodeXml = ??
}

我可以很容易地得到每个节点的 InnerXml,对于第一个节点来说是:

<name>Foo</name>
<status>Active</status>

但是我怎样才能得到节点的XML 包括包含标签及其属性,例如:

<Item id="1">
  <name>Foo</name>
  <status>Active</status>
</Item>

【问题讨论】:

    标签: c# xml xmldocument innerxml


    【解决方案1】:

    尝试使用XmlNode.OuterXml 而不是InnerXml

    foreach (XmlNode node in nodes)
    {
       var nodeXml = node.OuterXml;
    }
    

    【讨论】:

    • 我无法弄清楚为什么我无法在我的 foreach 循环 (InnerXml/OuterXml) 中访问这些属性中的任何一个。一旦我明确地将 XmlNode 设置为循环声明中的类型,就会按预期工作。非常感谢。
    • XmlNodeList 实现了IEnumerable,而不是IEnumerable&lt;T&gt;,因此如果您在foreach 循环中使用var,则循环变量将被视为object,因为编译器具有无法检测到它是更具体的类型。
    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2017-02-04
    • 2017-11-15
    相关资源
    最近更新 更多