示例:
...some string content here...
<test>
<a>
...something...
</a>
<a/>
{position 1}
<b>{position 2}
<c>
...something else...
{position 3}
</c>
<c/>
<d>
<e/>
{position 4}
<e>
...another thing here...
{position 5}
</e>
</d>
{position 6}
</b>
{position 7}
...more xml and other sting content...我需要在(例如)找到包含元素的父元素。以上所述位置。 结果是:{位置1} =测试{位置2} =b{位置3} =c{位置4} =d{位置5} =e{位置6} =b{位置7} =测试 备注:-任何元素标记名称都不知道-空字符串可能包含非xml内容-数据的大小非常大(>50 may文本文件)。
必须实现从给定位置开始向后读取的搜索技术,直到找到有效的匹配(如果有的话)。
谢谢
发布于 2013-02-21 15:18:13
根据定义,无效的XML不能被解析。这就是为什么任何XML解析器都会拒绝解析它并返回一个错误。
如果XML解析器不能解析它,您(基本上)也不能解析它。您所要求的不是一些简单的字符串或简单的标记集合,这些标记可以被正则表达式抓取。你真的必须做一个完整的分析(可能是无效的数据!)以便在特定位置找到父标记。
更新:要了解我在说什么,请考虑在您的示例中找到{position 1}的父级。
<a>),因为它会在位置之前关闭。</a>,并记住<a>标记是关闭的,这样您就不会将<a>计算为父标记。正如你所看到的,这是相当复杂的。这是在允许文件中的任何无效元素之前。
一种简单的方法可能有效:如果您确切地知道文件错误是什么,您可以删除这些错误,然后将更正的文件输入XML解析器。
否则,您将不得不为特定品牌的无效XML编写自己的自定义解析器。这甚至可能是不可能的,这取决于文件中错误的类型。
https://stackoverflow.com/questions/15005337
复制相似问题