我尝试解析以下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