Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中读取特定XML文件中的元素?_C#_Xml - Fatal编程技术网

如何在C#中读取特定XML文件中的元素?

如何在C#中读取特定XML文件中的元素?,c#,xml,C#,Xml,我的文件XML: <document xmlns="http://www.abbyy.com/FineReader_xml/FineReader10-schema-v1.xml" version="1.0" producer="ABBYY FineReader Engine 11" languages="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abbyy.c

我的文件XML:

<document xmlns="http://www.abbyy.com/FineReader_xml/FineReader10-schema-v1.xml" version="1.0" producer="ABBYY FineReader Engine 11" languages="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abbyy.com/FineReader_xml/FineReader10-schema-v1.xml http://www.abbyy.com/FineReader_xml/FineReader10-schema-v1.xml">
 <page width="1006" height="636" resolution="300" originalCoords="1" rotation="RotatedUpsidedown">


<block blockType="Text" blockName="" l="979" t="613" r="1006" b="636"><region><rect l="979" t="613" r="1006" b="636"/></region>
<text>
<par lineSpacing="890">
<line baseline="17" l="985" t="620" r="1006" b="636"><formatting lang="EnglishUnitedStates"><charParams l="985" t="620" r="1006" b="636" suspicious="1">r</charParams></formatting></line></par>
</text>
</block>


<block blockType="Barcode" blockName="" l="242" t="21" r="772" b="116"><region><rect l="242" t="21" r="772" b="116"/></region>
<text>
<par><line baseline="0" l="0" t="0" r="0" b="0"><formatting lang="">049102580225180310</formatting></line></par>
</text>
<barcodeInfo type="INTERLEAVED25"/>
</block>

</page>
</document>

但我什么都没有

这里有几个问题:

  • 您的XML在根节点中具有默认命名空间:

    <document xmlns="http://www.abbyy.com/FineReader_xml/FineReader10-schema-v1.xml" version="1.0" 
    
    输出两个
    元素值的示例:

    { CodeBar = r }
    { CodeBar = 049102580225180310 }
    

    这是一个控制台程序,它获取第二个格式化(lang='')节点

    var ns = racine.Name.Namespace; // The root default namespace used by all the elements in the XML.
    
    var query = from block in racine.Descendants(ns + "block")
                from formatting in block.Descendants(ns + "formatting")
                select new
                {
                    CodeBar= (string)formatting,
                };  
    
    { CodeBar = r }
    { CodeBar = 049102580225180310 }
    
    using System;
    using System.Xml;
    
    namespace ConsoleApplication1 {
        class Program {
            static void Main(string[] args) {
                XmlDocument xml = new XmlDocument();
                xml.Load("c:\\temp\\test.xml");
    
                NameTable nt = new NameTable();
                XmlNamespaceManager nsmgr;
                nsmgr = new XmlNamespaceManager(nt);
                nsmgr.AddNamespace("html", xml.DocumentElement.NamespaceURI);
    
                XmlNode ndFormat = xml.SelectSingleNode("//html:formatting[@lang='']", nsmgr);
                if (ndFormat != null) {
                    Console.WriteLine(ndFormat.InnerText);
                }
    
            }
        }
    }