我正在为我的网络应用做i18n,我在xml文件中有一个错误消息列表,如下所示:
<ErrorList>
<Errors culture="en">
<Error id="InvalidBooking">
<Heading1>We are unable to find your booking.</Heading1>
<Heading2></Heading2>
<Description1>Please try again.</Description1>
<Description2>OR</Description2>
<Description3>Seek assistance at the Check-In counter.</Description3>
<Description4></Description4>
</Error>
</Errors>
<Errors culture="zh">
<Error id="InvalidBooking">
<Heading1>我们无法找到您的预订。</Heading1>
<Heading2></Heading2>
<Description1>请再试一次。.</Description1>
<Description2>或</Description2>
<Description3>请联系登机柜台寻求帮助。</Description3>
<Description4></Description4>
</Error>
</Errors>
</ErrorList>
我使用DOM xml解析器加载错误消息。然后我通过匹配错误ID:
来获得特定错误DocumentBuilder builder = DocumentBuilderFactory.newInstance().
newDocumentBuilder();
Document doc = builder.parse(xml);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Error");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
Error _error = new Error();
_error.setKey(eElement.getAttribute("id"));
_error.setHeading1(eElement.getElementsByTagName("Heading1").item(0).getTextContent());
_error.setHeading2(eElement.getElementsByTagName("Heading2").item(0).getTextContent());
_error.setDescription1(eElement.getElementsByTagName("Description1").item(0).getTextContent());
_error.setDescription2(eElement.getElementsByTagName("Description2").item(0).getTextContent());
_error.setDescription3(eElement.getElementsByTagName("Description3").item(0).getTextContent());
_error.setDescription5(eElement.getElementsByTagName("Description4").item(0).getTextContent());
getErrors().add(_error);
如何指定文化ID以仅加载该部分中的错误消息?例如,当我切换到中文时,它会查找Errors culture =“zh”并仅在该部分进行解析? 感谢。
答案 0 :(得分:0)
在for循环中,您应该能够获取nNode的属性并进行检查。
if ("zh".equals(nNode.getAttribute("culture"))) {
// do it here...
}