将旧代码从J#重构为C#

时间:2012-07-12 08:08:54

标签: c# xml xmlnodelist

我有一些旧的J#代码,我正在转向C#

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

我在名为C#的{​​{1}}方法的XmlNodeList API中没有看到。 我应该在get_Item中更改get_Item

谢谢。

4 个答案:

答案 0 :(得分:1)

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

XMLNode.Item documentation on MSDN

答案 1 :(得分:1)

有几种方法,我建议LINQ to XML

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

strXml.Root
      .Decendants("ItemTransferOut")
      .First(xele => xele.Name.LocalName == "itemInfo")

答案 2 :(得分:1)

J#不支持像C#这样的属性,所以它们通过使用方法来“伪造”。您可以在that matter on MSDN找到更多信息。如果C#对象具有名为SomeProperty的属性:

 public class Dummy {
      public string SomeProperty { get; set; }
 }
<#>在J#中,你必须调用get_SomeProperty()和set_SomeProperty(字符串值):

 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"];

希望有所帮助:)

答案 3 :(得分:0)

使用XmlNode.Item Property (String)。来自msdn:

  

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