我有一些旧的J#代码,我正在转移到C#
XmlNodeList itemTransferOutNodes =
strXML.GetElementsByTagName("ItemTransferOut");
XmlElement itemInfo =
itemTransferOutNodes.Item(itemTrOutNodesCnt)
.ChildNodes.Item(0)
.get_Item("itemInfo");
我在C#
中看不到名为get_Item
的XmlNodeList
方法的API。我应该在c#
中更改get_Item
。
谢谢。
J#不像C#那样支持属性,所以它们是通过使用方法"伪造"的。你可以在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"];
希望能有所帮助:)
有几种方法,我推荐LINQ到XML
如果没有看到你的XML,我想它会是这样的:
strXml.Root
.Decendants("ItemTransferOut")
.First(xele => xele.Name.LocalName == "itemInfo")
XmlElement itemInfo = itemTransferOutNodes.Item(itemTrOutNodesCnt)
.ChildNodes
.Item(0)["itemInfo"];
MSDN 上的XMLNode.Item文档
使用XmlNode.Item属性(字符串)。来自msdn:
获取具有指定Name的第一个子元素。