3
我有一個datacontract對象,我可以使用DataContractSerializer成功將它序列化爲一個xml,但是當我試圖訪問一次使用XPath的節點時,它返回null。我無法找出它爲什麼會發生。XPath不能在xml中使用DataContractSerializer創建
這是我到目前爲止。
namespace DataContractLibrary
{
[DataContract]
public class Person
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public int Age { get; set; }
}
}
static void Main(string[] args)
{
Person dataContractObject = new Person();
dataContractObject.Age = 34;
dataContractObject.FirstName = "SomeFirstName";
dataContractObject.LastName = "SomeLastName";
var dataSerializer = new DataContractSerializer(dataContractObject.GetType());
XmlWriterSettings xmlSettings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8, OmitXmlDeclaration = true };
using (var xmlWriter = XmlWriter.Create("person.xml", xmlSettings))
{
dataSerializer.WriteObject(xmlWriter, dataContractObject);
}
XmlDocument document = new XmlDocument();
document.Load("person.xml");
XmlNamespaceManager namesapceManager = new XmlNamespaceManager(document.NameTable);
namesapceManager.AddNamespace("", document.DocumentElement.NamespaceURI);
XmlNode firstName = document.SelectSingleNode("//FirstName", namesapceManager);
if (firstName==null)
{
Console.WriteLine("Count not find the node.");
}
Console.ReadLine();
}
任何人都可以讓我知道我出了什麼問題嗎? 您的幫助將不勝感激。
@marc_s它使用一個更多的命名空間: - 「http://www.w3.org/2001/XMLSchema-instance」,但即使在添加這行後namesapceManager.AddNamespace(「i」,「http:// www .w3.org/2001/XMLSchema的實例「); ,我得到它只爲null – wizzardz 2011-05-06 05:01:33
無論出於何種原因,用'「」'前綴添加該名稱空間似乎不起作用。如果我添加一個'ns ='前綴並使用該前綴,它對我來說工作得很好...... – 2011-05-06 05:06:34