2

XML である次の Java リソース ファイルを解析しようとしました。私は C# および XDocument ツールを使用して解析しているため、ここでは Java の質問ではありません。

<?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string name="problem">&#160;test&#160;</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 = '&#160;test&#160;', Length = 16"

ドキュメントのエンコーディングは UTF8 です。

4

2 に答える 2