XML である次の Java リソース ファイルを解析しようとしました。私は 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 つの同一の XElements を持つ 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"
次の2行を取得したい:
"Text = ' test ', Length = 6"
"Text = ' test ', Length = 16"
ドキュメントのエンコーディングは UTF8 です。