たとえば、ニュース名とニュース日付を取得する必要があります。
<info>
<news>
<news name="Test 1" date="08.13.2013"/>
<news name="Test 2" date="08.09.2013"/>
</news>
</info>
C# を使用して、これをコンソールに表示します。
インターネットで見つけたいくつかのコードを試しました。しかし、誰も私に仕えませんでした!
編集¹:次のコードを試しました:
XmlDocument Doc = new XmlDocument();
Doc.Load(Server.MapPath("Content/Doc.xml"));
XmlNodeList itemList = Doc.DocumentElement.SelectNodes("news");
foreach (XmlNode currNode in itemList)
{
string name = string.Empty; <!-- here I make a new string and call it "date"-->
XmlNode item = currNode.SelectSingleNode("news");
name = item.Attributes["name"].Value.ToString();
Console.WriteLine("Test Name: "+name+"");
}
と:
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString);
XmlNodeList xnList = xml.SelectNodes("/news/news");
foreach (XmlNode xn in xnList)
{
string name = xn["name"].InnerText;
string date = xn["date"].InnerText;
Console.WriteLine("Test: {0} {1}", name, date);
}
しかし、それは機能せず、何も表示されません。またはプログラムが自動的に終了します。
解決しました!全てに感謝!
私はこのコードを使用します:
static void Main(string[] args)
{
XElement rootElement = XElement.Load(@"http://mywebsite.com/test.xml");
Program test = new Program();
Console.WriteLine(test.GetOutline(0, rootElement));
}
private string GetOutline(int indentLevel, XElement element)
{
StringBuilder result = new StringBuilder();
if (element.Attribute("name") != null)
{
result = result.AppendLine(new string(' ', indentLevel * 2) + element.Attribute("name").Value);
}
foreach (XElement childElement in element.Elements())
{
result.Append(GetOutline(indentLevel + 1, childElement));
}
return result.ToString();
}
結果: テスト 1 テスト 2