I am creating a language translation using XML by id
XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<word id="1">Word1_English</word>
<word id="2">Word2_English</word>
<word id="3">Word3_English</word>
<word id="10001">Word1_French</word>
<word id="10002">Word2_French</word>
<word id="10003">Word3_French</word>
<word id="20001">Word1_Chinese</word>
<word id="20002">Word2_Chinese</word>
<word id="20003">Word3_Chinese</word>
</root>
Code behind:
XmlDocument xmlDocument;
FileInfo fileInfo;
XmlNodeList xmlNodeList;
string xPath = "D:\XML\LanguagePack.xml";
fileInfo = new FileInfo(xPath);
xmlDocument = new XmlDocument();
xmlDocument.Load(fileInfo.FullName);
xmlNodeList = xmlDocument.GetElementById("10001");
return xmlNodeList[0].InnerText; //should return 'Word1_French'
This code doesn't work, xmlNodeList
is null.
How can I get the content Word1_French?
Check the MSDN documentation on XmlDocument.GetElementById Method:
In fact, you have to modify your XML file for specifying what you mean by 'ID'. If you don't want to do that, use a select method with an XPath.
So you need instead :
I suggest you to use LINQ to XML for parsing XML. It has nice strongly typed API. Getting string word by integer id looks like (requires System.Xml.Linq namespace):
Or even less code with XPath (requires System.Xml.XPath namespace):