标签: xmlreader

C#XMLreader和子节点

我有这个xml文件.

           <movies>
             <movie>
               <score>8.582207</score>
               <popularity>3</popularity>
               <translated>true</translated>
               <adult>false</adult>
               <language>en</language>
               <original_name>Transformers</original_name>
               <name>Transformers</name>
               <alternative_name>The Transformers</alternative_name>
               <type>movie</type>
               <id>1858</id>
               <imdb_id>tt0418279</imdb_id>
               <url>http://www.themoviedb.org/movie/1858<;/url>
               <votes>28</votes>
               <rating>7.2</rating>
               <certification>PG-13</certification>
               <overview>The Earth is caught in the middle of an intergalactic war /overview>
               <released>2007-07-04</released>
               <images>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-original.jpg" size="original" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-mid.jpg" size="mid" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-cover.jpg" size="cover" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-thumb.jpg" size="thumb" id="4bc91347017a3c57fe007304"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-original.jpg" size="original" id="4bc9133s9017a3c57fe0072ce"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-poster.jpg" size="poster" id="4bc91339017a3c57fe0072ce"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-thumb.jpg" size="thumb" id="4bc91339017a3c57fe0072ce"/>
               </images>
             <last_modified_at>2010-04-26 03:26:14</last_modified_at>
       </movie>
     </movies>
Run Code Online (Sandbox Code Playgroud)

我通过使用阅读所有属性

textReader.ReadToFollowing("original_name");
string title =textReader.ReadElementContentAsString("original_name",textReader.NamespaceURI);
Run Code Online (Sandbox Code Playgroud)

但是,无论我尝试什么,我都无法读取"图像"的子节点.

c# xml xmlreader

12
推荐指数
1
解决办法
3万
查看次数

xmlreader换行符\n而不是\ r \n

当我使用XmlReader.ReadOuterXml()时,元素由\n而不是\ r \n分隔.所以,例如,如果我有XmlDocument representatino

<A>
<B>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)

我明白了

<A>\n<B>\n</B>\n</A>
Run Code Online (Sandbox Code Playgroud)

是否有指定换行符的选项?XmlWriterSettings有它,但XmlReader似乎没有这个.

这是我读取xml的代码.请注意,默认情况下,XmlWriterSettings具有NewLineHandling = Replace

XmlDocument xmlDocument = <Generate some XmlDocument>
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

// Use a memory stream because it accepts UTF8 characters.  If we use a 
// string builder the XML will be UTF16.
using (MemoryStream memStream = new MemoryStream())
{
    using (XmlWriter xmlWriter = XmlWriter.Create(memStream, settings))
    {
        xmlDocument.Save(xmlWriter);
    }

    //Set the pointer back to the beginning of the stream to be read
    memStream.Position …
Run Code Online (Sandbox Code Playgroud)

.net newline xmlreader

11
推荐指数
2
解决办法
7440
查看次数

如何从XmlReader创建XML文件?

如何从System.Xml.XmlReader编写XML文件?

我认为这将是一个简单的问题,但每当我搜索时,我似乎最终都会将文件读取到读取器或逐个节点地编写.

XmlReader对象传达存储在数据库中的xml,只需要从数据库中传出一个文件即可.有没有简单的方法来做到这一点?

        SqlCommand dataCmd = new SqlCommand(sqlText, Conn);
        System.Xml.XmlReader dataReader = null;

        dataCmd.CommandTimeout = 60000;

        Conn.Open();
        dataReader = dataCmd.ExecuteXmlReader();
        dataReader.Read();
Run Code Online (Sandbox Code Playgroud)

c# xml xmlwriter xmlreader

10
推荐指数
2
解决办法
1万
查看次数

是否可以保存当前的XMLReader位置以供以后使用?

我用XMLReader对象创建了一个对象,这个Stream对象是我之前用XMLWriter对象编写的.

我知道XMLReader对象只是向前,因此我希望能够保存当前的阅读位置,所以我将能够继续从我停止阅读的地方阅读.

可能吗?
我知道它可能很棘手,因为XMLreader读取内存块的大块,所以恢复当前的XML元素读取点可能会有问题.

只有在您确切知道的情况下,请提供建议,具体方法是根据您对此问题的经验.

注意:
1.我只想保存该XMLReader场景的整个对象引用.
2. XMLReaderPosition =读取元素的当前指针,而不是Stream.Position其他东西.

.net c# xml xmlreader xml-serialization

10
推荐指数
1
解决办法
1956
查看次数

PHP打开gzipped XML

我正在努力阅读php中的gzip压缩文件.

我成功地使用XMLReader()读取了正常的xml文件,如下所示:

$xml = new XMLReader();
$xml->open($linkToXmlFile);
Run Code Online (Sandbox Code Playgroud)

但是,当gml文件被gzip压缩时,这不起作用.如何解压缩文件并使用XMLReader读取它?

php xml gzip xmlreader

9
推荐指数
1
解决办法
8105
查看次数

性能:XmlReader或LINQ to XML

我有一个150 MB的XML文件,在我的项目中用作DB.目前我正在用它XmlReader来阅读它的内容.我想知道在XmlReader这种情况下使用或LINQ to XML 是否更好.

请注意,我正在搜索此XML中的项目并显示搜索结果,因此可能需要很长时间或片刻.

.net xml performance xmlreader linq-to-xml

9
推荐指数
2
解决办法
6023
查看次数

如何从XMLReader获取属性

我有一些HTML,我正在转换为Spanned使用Html.fromHtml(...),我有一个自定义标签,我正在使用它:

<customtag id="1234">
Run Code Online (Sandbox Code Playgroud)

所以我已经实现了一个TagHandler处理这个自定义标记,如下所示:

public void handleTag( boolean opening, String tag, Editable output, XMLReader xmlReader ) {

    if ( tag.equalsIgnoreCase( "customtag" ) ) {

        String id = xmlReader.getProperty( "id" ).toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到一个SAX异常,因为我认为"id"字段实际上是一个属性,而不是属性.但是,没有getAttribute()办法XMLReader.所以我的问题是,如何使用此获取"id"字段的值XMLReader?谢谢.

java tag-soup android xmlreader

9
推荐指数
3
解决办法
5312
查看次数

替换Xml节点/元素的innertext

首先,这是C#.我正在为NHS中的一小部分同事创建一个互联网仪表板.下面是一个示例xml文件,我需要更改其中的innertext.我需要替换特定元素,例如"Workshop1".因为我们有一些研讨会,所以我不能使用通用编写器,因为它将使用下面的这一段代码替换XML文档中的所有信息.

<?xml version="1.0" ?> 
   <buttons>
      <workshop1>hello</workshop1> 
      <url1>www.google.co.uk</url1> 
Run Code Online (Sandbox Code Playgroud)

我正在使用一个开关盒来选择一个特定的工作室,您可以在其中更改名称并添加研讨会的URL,使用下面的代码将替换整个文档.

public void XMLW()
    {
        XmlTextReader reader = new XmlTextReader("C:\\myXmFile.xml");
        XmlDocument doc = new XmlDocument(); 

        switch (comboBox1.Text)

        {
            case "button1":


                doc.Load(reader); //Assuming reader is your XmlReader 
                doc.SelectSingleNode("buttons/workshop1").InnerText = textBox1.Text;
                reader.Close();
                doc.Save(@"C:\myXmFile.xml");
                break;


        }


    }
Run Code Online (Sandbox Code Playgroud)

所以只是为了澄清我希望我的C#程序搜索XML文档找到元素"Workshop1"并用文本框中的文本替换innertext.并且能够保存它而无需用一个节点替换整个文档.谢谢你的期待.

c# xml xmlwriter xmlreader winforms

9
推荐指数
1
解决办法
3万
查看次数

如何直接读取xml文件以获取XElement值?

现在我正在使用:

XElement xe = XElement.ReadFrom
Run Code Online (Sandbox Code Playgroud)

这要求XmlReader:

XmlReader reader = XmlTextReader.Create
Run Code Online (Sandbox Code Playgroud)

这需要一个字符串,这需要我通过StringReader:

new StringReader
Run Code Online (Sandbox Code Playgroud)

这要求TextReader/StreamReader最终能够将文件路径传递给它:

TextReader textReader = new StreamReader ( file );
Run Code Online (Sandbox Code Playgroud)

这是最简单的方法吗?我已经有使用的代码,XElement所以它工作正常,但我想减少XElement从xml文件获取的步骤数.就像是:

XElement xe = XElement.ReadFrom (string file);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

.net c# xelement xmlreader

8
推荐指数
1
解决办法
1万
查看次数

System.Xml.XmlException:解析名称时出现意外的文件结尾

我正在使用XmlReader检索使用SqlCommand.ExecuteXmlReader.

这是我的意见

当我运行这行代码时:

XDocument currentXDoc = XDocument.Load(ktXmlReader.ReadSubtree());
Run Code Online (Sandbox Code Playgroud)

它是第一次工作,按预期读取第一个Product节点.

第二次运行时,我得到以下异常:

System.Xml.XmlException:
Message: Unexpected end of file while parsing Name has occurred. Line 1, position 2048.

Stacktrace:    at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
   at System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos)
   at System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
   at System.Xml.XmlTextReaderImpl.ParseEndElement()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlSubtreeReader.Read()
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
   at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
Run Code Online (Sandbox Code Playgroud)

我确实发现了这个问题,这个问题与我的相似,但我很确定我的XML格式正确(我可以直接从运行的sproc中获取)

我的想法到目前为止:

  1. 2048是计算机中非常可疑的数字.我在某处XDocument或某处遇到了2KB的限制XmlReader吗?
  2. 我在循环中的ktXmlReader.Read()以某种方式跳过所有其他节点并直接进入EOF

c# xml linq xmlreader linq-to-xml

8
推荐指数
1
解决办法
2万
查看次数