我有这个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)
但是,无论我尝试什么,我都无法读取"图像"的子节点.
当我使用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) 如何从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) 我用XMLReader对象创建了一个对象,这个Stream对象是我之前用XMLWriter对象编写的.
我知道XMLReader对象只是向前,因此我希望能够保存当前的阅读位置,所以我将能够继续从我停止阅读的地方阅读.
可能吗?
我知道它可能很棘手,因为XMLreader读取内存块的大块,所以恢复当前的XML元素读取点可能会有问题.
只有在您确切知道的情况下,请提供建议,具体方法是根据您对此问题的经验.
注意:
1.我只想保存该XMLReader场景的整个对象引用.
2. XMLReaderPosition =读取元素的当前指针,而不是Stream.Position其他东西.
我正在努力阅读php中的gzip压缩文件.
我成功地使用XMLReader()读取了正常的xml文件,如下所示:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
Run Code Online (Sandbox Code Playgroud)
但是,当gml文件被gzip压缩时,这不起作用.如何解压缩文件并使用XMLReader读取它?
我有一个150 MB的XML文件,在我的项目中用作DB.目前我正在用它XmlReader来阅读它的内容.我想知道在XmlReader这种情况下使用或LINQ to XML 是否更好.
请注意,我正在搜索此XML中的项目并显示搜索结果,因此可能需要很长时间或片刻.
我有一些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?谢谢.
首先,这是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.并且能够保存它而无需用一个节点替换整个文档.谢谢你的期待.
现在我正在使用:
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)
有任何想法吗?
我正在使用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中获取)
我的想法到目前为止:
XDocument或某处遇到了2KB的限制XmlReader吗?