C# で XMLDocument に以下を含めるとします。
<Hello>
<Person:"Alan" Saying:"My name is Alan">
</Hello>
では、単一の属性「発言」を取得するにはどうすればよいでしょうか。「<>」内に単一の属性が含まれている場合に機能するコードを見つけましたが、上記のように内部に複数の属性がある場合は機能しないようです。
どんな助けでも大歓迎です、私はむしろC#の初心者です:)
C# で XMLDocument に以下を含めるとします。
<Hello>
<Person:"Alan" Saying:"My name is Alan">
</Hello>
では、単一の属性「発言」を取得するにはどうすればよいでしょうか。「<>」内に単一の属性が含まれている場合に機能するコードを見つけましたが、上記のように内部に複数の属性がある場合は機能しないようです。
どんな助けでも大歓迎です、私はむしろC#の初心者です:)
まず、これは有効な xml ではありません。あなたは次のようなものが欲しいと思います
<Hello>
<Person name="Alan" Saying="My name is Alan" />
</Hello>
Alan's Saying を取得する最も簡単な方法は、
XmlDocument doc = new XmlDocument();
doc.Load("filename.xml");
string saying = doc.SelectSingleNode("//Person[@name=Alan]").Attributes["saying"].Value;
それが機能する理由の詳細な説明については、 XPath の例を参照してください。
XML は次のようになります。
<Hello>
<Person name="Alan" saying="My name is Alan"/>
</Hello>
これを逆シリアル化するクラスは次のようになります。
public class Hello
{
public Person Person { get; set; }
}
public class Person
{
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public string Saying { get; set; }
}
それの使い方:
// Create a new XmlSerializer instance with the type of the test class
XmlSerializer SerializerObj = new XmlSerializer(typeof(Hello));
// load xml into string reader
StringReader reader = new StringReader(yourXmlString);
// Load the object saved above by using the Deserialize function
Hello LoadedObj = (Hello)SerializerObj.Deserialize(reader);
XmlSerializerの使用方法の詳細については、MSDN の記事を参照してください。