我正在阅读包含如下标记的XML:
<source><bpt id="1"><donottranslate></bpt><ph id="2">($ T_353_1 Parent ID $)</ph><ept id="1"></donottranslate></ept></source>
当阅读source
节点时,我得到的节点类型是Text,但它应该是Element。
这是我收到的XML,我无法更改它。
你知道如何解决这个问题吗?
这是我的代码:
XDocument doc = XDocument.Load(fileName, LoadOptions.PreserveWhitespace);
foreach (var elUnit in doc.Descendants("trans-unit"))
{
if (elUnit.AttributeString("translate").ToString() == "no")
{
foreach (var elSource in elUnit.Elements("source"))
{
string text = "";
foreach (var node in elSource.DescendantNodes().Where(n => XmlNodeType.Text == n.NodeType).ToList())
{
//When reading that "source" node, it enters inside this code
由于
答案 0 :(得分:0)
首先检查您的XML是否格式正确
我可以让这个工作
//using System.Xml.Linq;
var str = "<source><bpt id=\"1\"><donottranslate></bpt>" +
"<ph id=\"2\">($ T_353_1 Parent ID $)</ph>" +
"<ept id=\"1\"></donottranslate></ept></source>";
XElement element = XElement.Parse(str);
Console.WriteLine(element);
输出就是这个
<source>
<bpt id="1"><donottranslate></bpt>
<ph id="2">($ T_353_1 Parent ID $)</ph>
<ept id="1"></donottranslate></ept>
</source>
如果这个例子不够用,请提供一些代码示例以获得更多帮助。
答案 1 :(得分:0)
最后,我解决了这个检查节点是否正确的问题:
if (System.Security.SecurityElement.IsValidText(text.XmlDecodeEntities()))