1

我有一些旧的 J# 代码要迁移到 C#

  XmlNodeList itemTransferOutNodes = 
                 strXML.GetElementsByTagName("ItemTransferOut");
  XmlElement itemInfo = 
                 itemTransferOutNodes.Item(itemTrOutNodesCnt)
                                     .ChildNodes.Item(0)
                                     .get_Item("itemInfo");

我没有在C#API 中看到调用的XmlNodeList 方法 get_Item。我应该改变 什么get_Itemc#

谢谢 。

4

4 回答 4

1
XmlElement itemInfo = itemTransferOutNodes.Item(itemTrOutNodesCnt)
                                          .ChildNodes
                                          .Item(0)["itemInfo"]; 

MSDN 上的 XMLNode.Item 文档

于 2012-07-12T08:12:30.347 回答
1

有几种方法,我会推荐LINQ to XML

如果没有看到你的 XML,我猜它会是这样的:

strXml.Root
      .Decendants("ItemTransferOut")
      .First(xele => xele.Name.LocalName == "itemInfo")
于 2012-07-12T08:20:01.050 回答
1

J# 不像 C# 那样支持属性,因此它们是通过使用方法来“伪造”的。您可以在 MSDN上找到有关该问题的更多信息。如果 C# 对象具有名为 SomeProperty 的属性:

 public class Dummy {
      public string SomeProperty { get; set; }
 }

在 J# 中,您必须调用 get_SomeProperty() 和 set_SomeProperty(string value):

 public class Dummy
 {
      private String someProperty;

      /** @property */
      public void set_SomeProperty(String val) { 
          someProperty = val; 
      }

      /** @property */
      public String get_SomeProperty() { 
          return someProperty; 
      }
 }

反之亦然。

如果您在 J# 中找到名为 get_xxx 或 set_xxx 的类方法,则很可能在 C# 中,该对象具有名为 xxx 的属性。

所以基本上,正如其他人提到的那样,您必须在代码中使用 Item 属性:

XmlNodeList itemTransferOutNodes = 
                  strXML.GetElementsByTagName("ItemTransferOut");

XmlElement itemInfo = 
                  itemTransferOutNodes.Item(itemTrOutNodesCnt)
                  .ChildNodes.Item(0).Item["itemInfo"];

希望有帮助:)

于 2012-07-12T08:25:44.780 回答
0

使用XmlNode.Item 属性(字符串)。来自 msdn:

获取具有指定名称的第一个子元素。

于 2012-07-12T08:16:27.817 回答