我尝试解析以下 Java 资源文件 - 这是一个 XML。我正在使用 C# 和 XDocument 工具进行解析,所以这里不是 Java 问题。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="problem"> test </string>
<string name="no_problem"> test </string>
</resources>
问题是 XDocument.Load(string path) 方法将其加载为具有 2 个相同 XElement 的 XDocument。
我加载文件。
string filePath = @"c:\res.xml"; // whatever
var xDocument = XDocument.Load(filePath);
当我解析 XDocument 对象时,这就是问题所在。
foreach (var node in xDocument.Root.Nodes())
{
if (node.NodeType == XmlNodeType.Element)
{
var xElement = node as XElement;
if (xElement != null) // just to be sure
{
var elementText = xElement.Value;
Console.WriteLine("Text = '{0}', Length = {1}",
elementText, elementText.Length);
}
}
}
这将产生以下 2 行:
"Text = ' test ', Length = 6"
"Text = ' test ', Length = 6"
我想得到以下两行:
"Text = ' test ', Length = 6"
"Text = ' test ', Length = 16"
文档编码是 UTF8,如果这在某种程度上是相关的。