我嘗試解析以下Java資源文件 - 這是一個XML文件。 我解析使用C#和XDocument工具,所以這裏不是Java的問題。如何獲取XElement內部文本的非轉義長度?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="problem"> test </string>
<string name="no_problem"> test </string>
</resources>
的問題是,XDocument.Load(字符串路徑)方法加載這個爲具有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"
我希望得到以下兩行:
"Text = ' test ', Length = 6"
"Text = ' test ', Length = 16"
文檔編碼是UTF8,如果這是相關莫名其妙。
你將如何使用它?因爲你收到2個不同的字符串。一種是與常規的空間(32),另一種是不換行空間(160) –
梅德,收到2個相同字符串!我想收到2個不同的字符串! –
複製到http://stackoverflow.com/questions/8512094/how-do-i-preserve-all-xml-formatting-with-xdocument – Regu